diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -16,6 +16,7 @@
 | :------- | :--- | :------ |
 | [@5outh](https://github.com/5outh) | Benjamin Kovach | [MIT license] |
 | [@actionshrimp](https://github.com/actionshrimp) | David Aitken | [MIT license] |
+| [@ad-si](https://github.com/ad-si) | Adrian Sieber | [MIT license] |
 | [@adnelson](https://github.com/adnelson) | Allen Nelson | [MIT license] |
 | [@alexbiehl](https://github.com/alexbiehl) | Alexander Biehl | [MIT license] |
 | [@andreypopp](https://github.com/andreypopp) | Andrey Popp | [MIT license] |
@@ -167,6 +168,7 @@
 | [@woody88](https://github.com/woody88) | Woodson Delhia | [MIT license] |
 | [@xgrommx](https://github.com/xgrommx) | Denis Stoyanov | [MIT license] |
 | [@zudov](https://github.com/zudov) | Konstantin Zudov | [MIT license] |
+| [@roryc89](https://github.com/roryc89) | Rory Campbell | [MIT license] |
 
 
 ### Contributors using Modified Terms
diff --git a/INSTALL.md b/INSTALL.md
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -4,12 +4,13 @@
 
 ## Requirements
 
-The PureScript compiler is built using GHC 9.2.5, and should be able to run on any operating system supported by GHC 9.2.5. In particular:
+The PureScript compiler is built using GHC 9.8.4, and should be able to run on any operating system supported by GHC 9.8.4.
+In particular:
 
 * for Windows users, versions predating Vista are not officially supported,
 * for macOS / OS X users, versions predating Mac OS X 10.7 (Lion) are not officially supported.
 
-See also <https://www.haskell.org/ghc/download_ghc_9_2_5.html> for more details about the operating systems which GHC 9.2.5 supports.
+See also <https://www.haskell.org/ghc/download_ghc_9_8_4.html> for more details about the operating systems which GHC 9.8.4 supports.
 
 ## Official prebuilt binaries
 
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -12,5001 +12,5477 @@
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-PureScript uses the following Haskell library packages. Their license files follow.
-
-  Cabal
-  Glob
-  OneTuple
-  QuickCheck
-  StateVar
-  adjunctions
-  aeson
-  aeson-better-errors
-  alex
-  ansi-terminal
-  ansi-wl-pprint
-  array
-  assoc
-  async
-  attoparsec
-  auto-update
-  base
-  base-compat
-  base-compat-batteries
-  base-orphans
-  basement
-  bifunctors
-  binary
-  blaze-builder
-  blaze-html
-  blaze-markup
-  bower-json
-  boxes
-  bytestring
-  call-stack
-  cborg
-  cheapskate
-  clock
-  colour
-  comonad
-  conduit
-  conduit-extra
-  constraints
-  containers
-  contravariant
-  cryptonite
-  css-text
-  data-array-byte
-  data-default
-  data-default-class
-  data-default-instances-containers
-  data-default-instances-dlist
-  data-default-instances-old-locale
-  data-fix
-  data-ordlist
-  deepseq
-  directory
-  distributive
-  dlist
-  easy-file
-  edit-distance
-  exceptions
-  fast-logger
-  file-embed
-  filepath
-  free
-  ghc-bignum
-  ghc-prim
-  half
-  happy
-  hashable
-  haskeline
-  indexed-traversable
-  indexed-traversable-instances
-  integer-gmp
-  integer-logarithms
-  invariant
-  kan-extensions
-  language-javascript
-  lens
-  lifted-async
-  lifted-base
-  memory
-  monad-control
-  monad-logger
-  monad-loops
-  mono-traversable
-  monoidal-containers
-  mtl
-  mtl-compat
-  network
-  network-uri
-  newtype
-  old-locale
-  old-time
-  optparse-applicative
-  parallel
-  parsec
-  pattern-arrows
-  pretty
-  primitive
-  process
-  profunctors
-  protolude
-  random
-  reflection
-  regex-base
-  regex-tdfa
-  resourcet
-  safe
-  scientific
-  semialign
-  semigroupoids
-  semigroups
-  serialise
-  sourcemap
-  split
-  splitmix
-  stm
-  stm-chans
-  streaming-commons
-  strict
-  stringsearch
-  syb
-  tagged
-  tagsoup
-  template-haskell
-  text
-  text-short
-  th-abstraction
-  th-compat
-  these
-  time
-  time-compat
-  transformers
-  transformers-base
-  transformers-compat
-  type-equality
-  typed-process
-  uniplate
-  unix
-  unix-compat
-  unix-time
-  unliftio-core
-  unordered-containers
-  utf8-string
-  uuid-types
-  vector
-  vector-algorithms
-  void
-  witherable
-  xss-sanitize
-  zlib
-
-Cabal LICENSE file:
-
-  Copyright (c) 2003-2020, Cabal Development Team.
-  See the AUTHORS file for the full list of copyright holders.
-
-  See */LICENSE for the copyright holders of the subcomponents.
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Isaac Jones nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Glob LICENSE file:
-
-  The code in Glob is released under the license below. Copyrights to parts of
-  the code are held by whoever wrote the code in question: see CREDITS.txt for a
-  list of authors.
-
-  Copyright (c) 2008-2018 <authors>
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in the
-        documentation and/or other materials provided with the distribution.
-      * Neither the name of the project nor the names of its contributors may be
-        used to endorse or promote products derived from this software without
-        specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
-  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-  EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-OneTuple LICENSE file:
-
-
-  Copyright (c) 2008, John A. Dorsey.
-  All rights reserved.
-
-  Redistribution and use of this software in source and binary forms,
-  with or without modification, are permitted provided that the
-  following conditions are met:
-
-  * Redistributions of source code must retain the above
-    copyright notice, this list of conditions and the
-    following disclaimer.
-
-  * Redistributions in binary form must reproduce the above
-    copyright notice, this list of conditions and the
-    following disclaimer in the documentation and/or other
-    materials provided with the distribution.
-
-  * Neither the name of John Dorsey nor the names of its
-    contributors may be used to endorse or promote products
-    derived from this software without specific prior
-    written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
-  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-  OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-QuickCheck LICENSE file:
-
-  (The following is the 3-clause BSD license.)
-
-  Copyright (c) 2000-2019, Koen Claessen
-  Copyright (c) 2006-2008, Björn Bringert
-  Copyright (c) 2009-2019, Nick Smallbone
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-  - Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-  - Neither the names of the copyright owners nor the names of the
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-StateVar LICENSE file:
-
-  Copyright (c) 2014-2015, Edward Kmett
-  Copyright (c) 2009-2021, Sven Panne
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  1. Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of its contributors may be
-     used to endorse or promote products derived from this software without
-     specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-adjunctions LICENSE file:
-
-  Copyright 2011-2014 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-aeson LICENSE file:
-
-  Copyright (c) 2011, MailRank, Inc. 2014-2021 Aeson project contributors
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
-  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-aeson-better-errors LICENSE file:
-
-  Copyright (c) 2015 Harry Garrood
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-alex LICENSE file:
-
-  Copyright (c) 1995-2011, Chris Dornan and Simon Marlow
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of the copyright holders, nor the names of the
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-ansi-terminal LICENSE file:
-
-  Copyright (c) 2008, Maximilian Bolingbroke
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification, are permitted
-  provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright notice, this list of
-        conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright notice, this list of
-        conditions and the following disclaimer in the documentation and/or other materials
-        provided with the distribution.
-      * Neither the name of Maximilian Bolingbroke nor the names of other contributors may be used to
-        endorse or promote products derived from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-ansi-wl-pprint LICENSE file:
-
-  Copyright 2008, Daan Leijen and Max Bolingbroke. All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-  This software is provided by the copyright holders "as is" and any
-  express or implied warranties, including, but not limited to, the
-  implied warranties of merchantability and fitness for a particular
-  purpose are disclaimed. In no event shall the copyright holders be
-  liable for any direct, indirect, incidental, special, exemplary, or
-  consequential damages (including, but not limited to, procurement of
-  substitute goods or services; loss of use, data, or profits; or
-  business interruption) however caused and on any theory of liability,
-  whether in contract, strict liability, or tort (including negligence
-  or otherwise) arising in any way out of the use of this software, even
-  if advised of the possibility of such damage.
-
-array LICENSE file:
-
-  This library (libraries/base) is derived from code from several
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-    * Code from the Haskell Foreign Function Interface specification,
-      which is (c) Manuel M. T. Chakravarty and freely redistributable
-      (but see the full license for restrictions).
-
-  The full text of these licenses is reproduced below.  All of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "The Haskell 98 Foreign Function
-  Interface, An Addendum to the Haskell 98 Report" is distributed under
-  the following license:
-
-    Copyright (c) 2002 Manuel M. T. Chakravarty
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Foreign Function Interface.
-
-  -----------------------------------------------------------------------------
-
-
-assoc LICENSE file:
-
-  Copyright (c) 2017, Oleg Grenrus
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Oleg Grenrus nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-async LICENSE file:
-
-  Copyright (c) 2012, Simon Marlow
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Simon Marlow nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-attoparsec LICENSE file:
-
-  Copyright (c) Lennart Kolmodin
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
-  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-auto-update LICENSE file:
-
-  Copyright (c) 2014 Michael Snoyman
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-base LICENSE file:
-
-  This library (libraries/base) is derived from code from several
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-    * Code from the Haskell Foreign Function Interface specification,
-      which is (c) Manuel M. T. Chakravarty and freely redistributable
-      (but see the full license for restrictions).
-
-  The full text of these licenses is reproduced below.  All of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "The Haskell 98 Foreign Function
-  Interface, An Addendum to the Haskell 98 Report" is distributed under
-  the following license:
-
-    Copyright (c) 2002 Manuel M. T. Chakravarty
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Foreign Function Interface.
-
-  -----------------------------------------------------------------------------
-
-base-compat LICENSE file:
-
-  Copyright (c) 2012-2018 Simon Hengel <sol@typeful.net> and Ryan Scott <ryan.gl.scott@gmail.com>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-
-base-compat-batteries LICENSE file:
-
-  Copyright (c) 2012-2018 Simon Hengel <sol@typeful.net> and Ryan Scott <ryan.gl.scott@gmail.com>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-
-base-orphans LICENSE file:
-
-  Copyright (c) 2015-2017 Simon Hengel <sol@typeful.net>, João Cristóvão <jmacristovao@gmail.com>, Ryan Scott <ryan.gl.scott@gmail.com>
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-basement LICENSE file:
-
-  Copyright (c) 2015-2017 Vincent Hanquez <vincent@snarc.org>
-  Copyright (c) 2017-2019 Foundation Maintainers
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-bifunctors LICENSE file:
-
-  Copyright 2008-2016 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-binary LICENSE file:
-
-  Copyright (c) Lennart Kolmodin
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
-  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-blaze-builder LICENSE file:
-
-  Copyright Jasper Van der Jeugt 2010, Simon Meier 2010 & 2011
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Jasper Van der Jeugt nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-blaze-html LICENSE file:
-
-  Copyright Jasper Van der Jeugt 2010
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Jasper Van der Jeugt nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-blaze-markup LICENSE file:
-
-  Copyright Jasper Van der Jeugt 2010
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Jasper Van der Jeugt nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-bower-json LICENSE file:
-
-  Copyright (c) 2015 Harry Garrood
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-boxes LICENSE file:
-
-  Copyright (c) Brent Yorgey 2008
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of the author nor the names of other contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  All other rights are reserved.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-bytestring LICENSE file:
-
-  Copyright (c) Don Stewart 2005-2009
-            (c) Duncan Coutts 2006-2015
-            (c) David Roundy 2003-2005
-            (c) Simon Meier 2010-2011
-            (c) Koz Ross 2021
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-call-stack LICENSE file:
-
-  Copyright (c) 2016-2021 Simon Hengel <sol@typeful.net>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-
-cborg LICENSE file:
-
-  Copyright (c) 2015-2017 Duncan Coutts,
-                2015-2017 Well-Typed LLP,
-                2015 IRIS Connect Ltd.
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Duncan Coutts nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-cheapskate LICENSE file:
-
-  Copyright (c) 2013, John MacFarlane
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of John MacFarlane nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-clock LICENSE file:
-
-  Copyright (c) 2009-2012, Cetin Sert
-  Copyright (c) 2010, Eugene Kirpichov
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * The names of contributors may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-colour LICENSE file:
-
-  Copyright (c) 2008, 2009
-  Russell O'Connor
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-
-comonad LICENSE file:
-
-  Copyright 2008-2014 Edward Kmett
-  Copyright 2004-2008 Dave Menendez
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-conduit LICENSE file:
-
-  Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-conduit-extra LICENSE file:
-
-  Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-constraints LICENSE file:
-
-  Copyright 2011-2015 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-containers LICENSE file:
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-contravariant LICENSE file:
-
-  Copyright 2007-2015 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-cryptonite LICENSE file:
-
-  Copyright (c) 2006-2015 Vincent Hanquez <vincent@snarc.org>
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-css-text LICENSE file:
-
-  Copyright (c) 2010 Michael Snoyman, http://www.yesodweb.com/
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-data-array-byte LICENSE file:
-
-  Copyright (c) 2008-2009, Roman Leshchinskiy
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-
-data-default LICENSE file:
-
-  Copyright (c) 2013 Lukas Mai
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification,
-  are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-  * Neither the name of the author nor the names of his contributors
-    may be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-data-default-class LICENSE file:
-
-  Copyright (c) 2013 Lukas Mai
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification,
-  are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-  * Neither the name of the author nor the names of his contributors
-    may be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-data-default-instances-containers LICENSE file:
-
-  Copyright (c) 2013 Lukas Mai
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification,
-  are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-  * Neither the name of the author nor the names of his contributors
-    may be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY LUKAS MAI AND CONTRIBUTORS "AS IS" AND ANY
-  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-data-default-instances-dlist LICENSE file:
-
-  Copyright (c) 2013 Lukas Mai
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification,
-  are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-  * Neither the name of the author nor the names of his contributors
-    may be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY LUKAS MAI AND CONTRIBUTORS "AS IS" AND ANY
-  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-data-default-instances-old-locale LICENSE file:
-
-  Copyright (c) 2013 Lukas Mai
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification,
-  are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-  * Neither the name of the author nor the names of his contributors
-    may be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY LUKAS MAI AND CONTRIBUTORS "AS IS" AND ANY
-  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-data-fix LICENSE file:
-
-  Copyright Anton Kholomiov 2010
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Anton Kholomiov nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-data-ordlist LICENSE file:
-
-  Copyright (c) 2009-2010, Melding Monads
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-      * Neither the name of Melding Monads nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-deepseq LICENSE file:
-
-  This library (deepseq) is derived from code from the GHC project which
-  is largely (c) The University of Glasgow, and distributable under a
-  BSD-style license (see below).
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2001-2009, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-directory LICENSE file:
-
-  This library (libraries/base) is derived from code from two
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-  The full text of these licenses is reproduced below.  Both of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-distributive LICENSE file:
-
-  Copyright 2011-2016 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-dlist LICENSE file:
-
-  Copyright © 2006-2009 Don Stewart, 2013-2020 Sean Leather, contributors
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification,
-  are permitted provided that the following conditions are met:
-
-  1. Redistributions of source code must retain the above copyright notice, this
-     list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright notice,
-     this list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
-
-  3. Neither the name of the copyright holders nor the names of other contributors
-     may be used to endorse or promote products derived from this software without
-     specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
-  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-easy-file LICENSE file:
-
-  Copyright (c) 2009, IIJ Innovation Institute Inc.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-    * Neither the name of the copyright holders nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-edit-distance LICENSE file:
-
-  Copyright (c) 2008-2013 Maximilian Bolingbroke
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification, are permitted
-  provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright notice, this list of
-        conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright notice, this list of
-        conditions and the following disclaimer in the documentation and/or other materials
-        provided with the distribution.
-      * Neither the name of Maximilian Bolingbroke nor the names of other contributors may be used to
-        endorse or promote products derived from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-exceptions LICENSE file:
-
-  Copyright 2013-2015 Edward Kmett
-  Copyright 2012 Google Inc.
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-fast-logger LICENSE file:
-
-  Copyright (c) 2009, IIJ Innovation Institute Inc.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-    * Neither the name of the copyright holders nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-file-embed LICENSE file:
-
-  The following license covers this documentation, and the source code, except
-  where otherwise indicated.
-
-  Copyright 2008, Michael Snoyman. All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-  EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
-  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-filepath LICENSE file:
-
-  Copyright Neil Mitchell 2005-2020.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Neil Mitchell nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-free LICENSE file:
-
-  Copyright 2008-2013 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-ghc-bignum LICENSE file:
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2020, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-ghc-prim LICENSE file:
-
-  This library (libraries/ghc-prim) is derived from code from several
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-  The full text of these licenses is reproduced below.  All of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-
-half LICENSE file:
-
-  Copyright 2014 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-happy LICENSE file:
-
-  The Happy License
-  -----------------
-
-  Copyright 2001, Simon Marlow and Andy Gill.  All rights reserved.
-
-  Extensions to implement Tomita's Generalized LR parsing:
-    Copyright 2004, University of Durham, Paul Callaghan and Ben Medlock.
-    All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY
-  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-hashable LICENSE file:
-
-  Copyright Milan Straka 2010
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Milan Straka nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-haskeline LICENSE file:
-
-  Copyright 2007 Judah Jacobson
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  1. Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  3. Neither the name of the copyright holder nor the names of its contributors
-  may be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-indexed-traversable LICENSE file:
-
-  Copyright 2012-2016 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-indexed-traversable-instances LICENSE file:
-
-  Copyright 2012-2016 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-integer-gmp LICENSE file:
-
-  Copyright (c) 2014, Herbert Valerio Riedel
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Herbert Valerio Riedel nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-integer-logarithms LICENSE file:
-
-  Copyright (c) 2011 Daniel Fischer, 2017 Oleg Grenrus
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-   associated documentation files (the "Software"), to deal in the Software without restriction,
-   including without limitation the rights to use, copy, modify, merge, publish, distribute,
-   sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-   furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-  LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-invariant LICENSE file:
-
-  Copyright (c) 2012-2017, University of Kansas
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, this
-      list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-kan-extensions LICENSE file:
-
-  Copyright 2008-2016 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-language-javascript LICENSE file:
-
-  Copyright (c)2010, Alan Zimmerman
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Alan Zimmerman nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-lens LICENSE file:
-
-  Copyright 2012-2016 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-lifted-async LICENSE file:
-
-  Copyright (c) 2012-2017, Mitsutoshi Aoe
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Mitsutoshi Aoe nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-lifted-base LICENSE file:
-
-  Copyright © 2010-2012, Bas van Dijk, Anders Kaseorg
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-  • Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  • Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-  • Neither the name of the author nor the names of other contributors
-    may be used to endorse or promote products derived from this
-    software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
-  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-memory LICENSE file:
-
-  Copyright (c) 2015-2018 Vincent Hanquez <vincent@snarc.org>
-  Copyright (c) 2017-2018 Nicolas Di Prima <nicolas@primetype.co.uk>
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-monad-control LICENSE file:
-
-  Copyright © 2010, Bas van Dijk, Anders Kaseorg
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-  • Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  • Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-  • Neither the name of the author nor the names of other contributors
-    may be used to endorse or promote products derived from this
-    software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
-  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-monad-logger LICENSE file:
-
-  Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-mono-traversable LICENSE file:
-
-  Copyright (c) 2013 Michael Snoyman, http://www.fpcomplete.com/
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-monoidal-containers LICENSE file:
-
-  Copyright (c) 2015, Ben Gamari
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Ben Gamari nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-mtl LICENSE file:
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-mtl-compat LICENSE file:
-
-  Copyright (c) 2015-2017, Ryan Scott
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Ryan Scott nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-network LICENSE file:
-
-  Copyright (c) 2002-2010, The University Court of the University of Glasgow.
-  Copyright (c) 2007-2010, Johan Tibell
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-network-uri LICENSE file:
-
-  Copyright (c) 2002-2010, The University Court of the University of Glasgow.
-  Copyright (c) 2007-2010, Johan Tibell
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-newtype LICENSE file:
-
-  Copyright (c) 2011, Darius Jahandarie
-                2019, Herbert Valerio Riedel
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Darius Jahandarie nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-old-locale LICENSE file:
-
-  This library (libraries/base) is derived from code from two
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-  The full text of these licenses is reproduced below.  Both of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-old-time LICENSE file:
-
-  This library (libraries/base) is derived from code from two
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-  The full text of these licenses is reproduced below.  Both of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-optparse-applicative LICENSE file:
-
-  Copyright (c) 2012, Paolo Capriotti
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Paolo Capriotti nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-parallel LICENSE file:
-
-  This library (libraries/parallel) is derived from code from
-  the GHC project which is largely (c) The University of
-  Glasgow, and distributable under a BSD-style license (see below).
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-parsec LICENSE file:
-
-  Copyright 1999-2000, Daan Leijen; 2007, Paolo Martini. All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-  This software is provided by the copyright holders "as is" and any express or
-  implied warranties, including, but not limited to, the implied warranties of
-  merchantability and fitness for a particular purpose are disclaimed. In no
-  event shall the copyright holders be liable for any direct, indirect,
-  incidental, special, exemplary, or consequential damages (including, but not
-  limited to, procurement of substitute goods or services; loss of use, data,
-  or profits; or business interruption) however caused and on any theory of
-  liability, whether in contract, strict liability, or tort (including
-  negligence or otherwise) arising in any way out of the use of this software,
-  even if advised of the possibility of such damage.
-
-pattern-arrows LICENSE file:
-
-  The MIT License (MIT)
-
-  Copyright (c) 2013 Phil Freeman
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of
-  this software and associated documentation files (the "Software"), to deal in
-  the Software without restriction, including without limitation the rights to
-  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-  the Software, and to permit persons to whom the Software is furnished to do so,
-  subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all
-  copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-  FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-pretty LICENSE file:
-
-  This library (libraries/pretty) is derived from code from
-  the GHC project which is largely (c) The University of
-  Glasgow, and distributable under a BSD-style license (see below).
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-primitive LICENSE file:
-
-  Copyright (c) 2008-2009, Roman Leshchinskiy
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-
-process LICENSE file:
-
-  This library (libraries/process) is derived from code from two
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-  The full text of these licenses is reproduced below.  Both of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-profunctors LICENSE file:
-
-  Copyright 2011-2015 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-protolude LICENSE file:
-
-  Copyright (c) 2016-2020, Stephen Diehl
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to
-  deal in the Software without restriction, including without limitation the
-  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-  sell copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-  IN THE SOFTWARE.
-
-random LICENSE file:
-
-  This library (libraries/base) is derived from code from two
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-  The full text of these licenses is reproduced below.  Both of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-reflection LICENSE file:
-
-  Copyright (c) 2009-2013 Edward Kmett
-  Copyright (c) 2004 Oleg Kiselyov and Chung-chieh Shan
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Edward Kmett nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-regex-base LICENSE file:
-
-  Copyright (c) 2007, Christopher Kuklewicz
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-      * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-regex-tdfa LICENSE file:
-
-  This modile is under this "3 clause" BSD license:
-
-  Copyright (c) 2007-2009, Christopher Kuklewicz
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-      * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-resourcet LICENSE file:
-
-  Copyright (c)2011, Michael Snoyman
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Michael Snoyman nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-safe LICENSE file:
-
-  Copyright Neil Mitchell 2007-2020.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Neil Mitchell nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-scientific LICENSE file:
-
-  Copyright (c) 2013, Bas van Dijk
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Bas van Dijk nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-semialign LICENSE file:
-
-  Copyright (c) 2012, C. McCann, 2015-2019 Oleg Grenrus
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of C. McCann nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-semigroupoids LICENSE file:
-
-  Copyright 2011-2015 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-semigroups LICENSE file:
-
-  Copyright 2011-2015 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-serialise LICENSE file:
-
-  Copyright (c) 2017, Duncan Coutts
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Duncan Coutts nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-sourcemap LICENSE file:
-
-  Copyright (c) 2012, Chris Done
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Chris Done nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-split LICENSE file:
-
-  Copyright (c) 2008 Brent Yorgey, Louis Wasserman
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of the author nor the names of other contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-splitmix LICENSE file:
-
-  Copyright (c) 2017, Oleg Grenrus
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Oleg Grenrus nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-stm LICENSE file:
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-stm-chans LICENSE file:
-
-  === stm-chans license ===
-
-  Copyright (c) 2011--2013, wren gayle romano.
-  ALL RIGHTS RESERVED.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of the copyright holders nor the names of
-        other contributors may be used to endorse or promote products
-        derived from this software without specific prior written
-        permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-
-streaming-commons LICENSE file:
-
-  The MIT License (MIT)
-
-  Copyright (c) 2014 FP Complete
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all
-  copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-  SOFTWARE.
-
-strict LICENSE file:
-
-  Copyright (c) Roman Leshchinskiy 2006-2007
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-stringsearch LICENSE file:
-
-  Copyright (c)2010, Daniel Fischer
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Daniel Fischer nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syb LICENSE file:
-
-  This library (libraries/syb) is derived from code from several
-  sources:
-
-    * Code from the GHC project which is largely (c) The University of
-      Glasgow, and distributable under a BSD-style license (see below),
-
-    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
-      and freely redistributable (but see the full license for
-      restrictions).
-
-    * Code from the Haskell Foreign Function Interface specification,
-      which is (c) Manuel M. T. Chakravarty and freely redistributable
-      (but see the full license for restrictions).
-
-  The full text of these licenses is reproduced below.  All of the
-  licenses are BSD-style or compatible.
-
-  -----------------------------------------------------------------------------
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "Report on the Programming Language
-  Haskell 98", is distributed under the following license:
-
-    Copyright (c) 2002 Simon Peyton Jones
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Language.
-
-  -----------------------------------------------------------------------------
-
-  Code derived from the document "The Haskell 98 Foreign Function
-  Interface, An Addendum to the Haskell 98 Report" is distributed under
-  the following license:
-
-    Copyright (c) 2002 Manuel M. T. Chakravarty
-
-    The authors intend this Report to belong to the entire Haskell
-    community, and so we grant permission to copy and distribute it for
-    any purpose, provided that it is reproduced in its entirety,
-    including this Notice.  Modified versions of this Report may also be
-    copied and distributed for any purpose, provided that the modified
-    version is clearly presented as such, and that it does not claim to
-    be a definition of the Haskell 98 Foreign Function Interface.
-
-  -----------------------------------------------------------------------------
-
-tagged LICENSE file:
-
-  Copyright (c) 2009-2015 Edward Kmett
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Edward Kmett nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-tagsoup LICENSE file:
-
-  Copyright Neil Mitchell 2006-2019.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Neil Mitchell nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-template-haskell LICENSE file:
-
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2002-2007, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-
-text LICENSE file:
-
-  Copyright (c) 2008-2009, Tom Harper
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-text-short LICENSE file:
-
-  Copyright (c) 2017, Herbert Valerio Riedel
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Herbert Valerio Riedel nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-th-abstraction LICENSE file:
-
-  Copyright (c) 2017-2020 Eric Mertens
-
-  Permission to use, copy, modify, and/or distribute this software for any purpose
-  with or without fee is hereby granted, provided that the above copyright notice
-  and this permission notice appear in all copies.
-
-  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-  OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-  THIS SOFTWARE.
-
-th-compat LICENSE file:
-
-  Copyright (c) 2020, Ryan Scott
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Ryan Scott nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-these LICENSE file:
-
-  Copyright (c) 2012, C. McCann, 2015-2019 Oleg Grenrus
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of C. McCann nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-time LICENSE file:
-
-  TimeLib is Copyright (c) Ashley Yakeley and contributors, 2004-2020. All rights reserved.
-  Certain sections are Copyright 2004, The University Court of the University of Glasgow. All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-  - Neither name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-time-compat LICENSE file:
-
-  Copyright (c) 2019 time contibutors, Oleg Grenrus
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Oleg Grenrus nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-transformers LICENSE file:
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-transformers-base LICENSE file:
-
-  Copyright (c) 2011, Mikhail Vorozhtsov, Bas van Dijk
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-  - Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-  - Neither the names of the copyright owners nor the names of the
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-transformers-compat LICENSE file:
-
-  Copyright 2012-2015 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-type-equality LICENSE file:
-
-  Copyright (c) 2009 Erik Hesselink, 2019 Oleg Grenrus, Ryan Scott
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of authors nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-typed-process LICENSE file:
-
-  Copyright (c) 2016 FP Complete, https://www.fpcomplete.com/
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-uniplate LICENSE file:
-
-  Copyright Neil Mitchell 2006-2020.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Neil Mitchell nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-unix LICENSE file:
-
-  The Glasgow Haskell Compiler License
-
-  Copyright 2004, The University Court of the University of Glasgow.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-unix-compat LICENSE file:
-
-  Copyright (c) 2007-2008, Björn Bringert
-  Copyright (c) 2007-2009, Duncan Coutts
-  Copyright (c) 2010-2011, Jacob Stanley
-  Copyright (c)      2011, Bryan O'Sullivan
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-  - Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-  - Neither the names of the copyright owners nor the names of the
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-unix-time LICENSE file:
-
-  Copyright (c) 2009, IIJ Innovation Institute Inc.
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-    * Neither the name of the copyright holders nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-unliftio-core LICENSE file:
-
-  Copyright (c) 2017 FP Complete
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-unordered-containers LICENSE file:
-
-  Copyright (c) 2010, Johan Tibell
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Johan Tibell nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-utf8-string LICENSE file:
-
-  * Copyright (c) 2007, Galois Inc.
-  * All rights reserved.
-  *
-  * Redistribution and use in source and binary forms, with or without
-  * modification, are permitted provided that the following conditions are met:
-  *     * Redistributions of source code must retain the above copyright
-  *       notice, this list of conditions and the following disclaimer.
-  *     * Redistributions in binary form must reproduce the above copyright
-  *       notice, this list of conditions and the following disclaimer in the
-  *       documentation and/or other materials provided with the distribution.
-  *     * Neither the name of Galois Inc. nor the
-  *       names of its contributors may be used to endorse or promote products
-  *       derived from this software without specific prior written permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY Galois Inc. ``AS IS'' AND ANY
-  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  * DISCLAIMED. IN NO EVENT SHALL Galois Inc. BE LIABLE FOR ANY
-  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-uuid-types LICENSE file:
-
-  Copyright (c) 2008, Antoine Latter
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-      * Redistributions of source code must retain the above copyright
-  notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-  notice, this list of conditions and the following disclaimer in the
-  documentation and/or other materials provided with the distribution.
-      * The names of the authors may not be used to endorse or promote
-  products derived from this software without specific prior written
-  permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-vector LICENSE file:
-
-  Copyright (c) 2008-2012, Roman Leshchinskiy
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  - Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
-
-  - Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-  - Neither name of the University nor the names of its contributors may be
-  used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
-
-
-vector-algorithms LICENSE file:
-
-  Copyright (c) 2015 Dan Doel
-  Copyright (c) 2015 Tim Baumann
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-  ------------------------------------------------------------------------------
-
-  The code in Data.Array.Vector.Algorithms.Mutable.Optimal is adapted from a C
-  algorithm for the same purpose. The folowing is the copyright notice for said
-  C code:
-
-  Copyright (c) 2004 Paul Hsieh
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-
-      Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-
-      Neither the name of sorttest nor the names of its contributors may be
-      used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-void LICENSE file:
-
-  Copyright 2015 Edward Kmett
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. Neither the name of the author nor the names of his contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
-witherable LICENSE file:
-
-  Copyright (c) 2014, Fumiaki Kinoshita
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-
-      * Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials provided
-        with the distribution.
-
-      * Neither the name of Fumiaki Kinoshita nor the names of other
-        contributors may be used to endorse or promote products derived
-        from this software without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-xss-sanitize LICENSE file:
-
-  The following license covers this documentation, and the source code, except
-  where otherwise indicated.
-
-  Copyright 2010, Greg Weber. All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-  EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
-  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-zlib LICENSE file:
-
-  Copyright (c) 2006-2016, Duncan Coutts
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  1. Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. This clause is intentionally left blank.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
+PureScript executables for Linux distributed under the Releases tab of its GitHub
+repository (https://github.com/purescript/purescript) may be statically-linked to
+a version of GMP, licensed under the GNU Lesser General Public License Version 3,
+29 June 2007. 
+
+The full source code of PureScript is available in the aforementioned repository,
+https://github.com/purescript/purescript, allowing you to modify and relink the
+GMP portion if desired.
+
+GMP source code is available at: https://gmplib.org/
+
+A copy of the LGPL is reproduced below.
+
+PureScript uses the following Haskell library packages. Their license files follow.
+
+  Cabal
+  Cabal-syntax
+  Glob
+  OneTuple
+  QuickCheck
+  StateVar
+  adjunctions
+  aeson
+  aeson-better-errors
+  alex
+  ansi-terminal
+  ansi-terminal-types
+  array
+  assoc
+  async
+  attoparsec
+  auto-update
+  base
+  base-orphans
+  basement
+  bifunctors
+  binary
+  bitvec
+  blaze-builder
+  blaze-html
+  blaze-markup
+  boring
+  bower-json
+  boxes
+  bytestring
+  call-stack
+  cborg
+  character-ps
+  cheapskate
+  clock
+  colour
+  comonad
+  conduit
+  conduit-extra
+  constraints
+  containers
+  contravariant
+  cryptonite
+  css-text
+  data-default
+  data-default-class
+  data-default-instances-containers
+  data-default-instances-dlist
+  data-default-instances-old-locale
+  data-fix
+  data-ordlist
+  deepseq
+  directory
+  distributive
+  dlist
+  easy-file
+  edit-distance
+  exceptions
+  fast-logger
+  file-embed
+  filepath
+  free
+  generically
+  ghc-bignum
+  ghc-prim
+  half
+  happy
+  hashable
+  haskeline
+  indexed-traversable
+  indexed-traversable-instances
+  integer-conversion
+  integer-gmp
+  integer-logarithms
+  invariant
+  kan-extensions
+  language-javascript
+  lens
+  lifted-async
+  lifted-base
+  memory
+  monad-control
+  monad-logger
+  monad-loops
+  mono-traversable
+  monoidal-containers
+  mtl
+  mtl-compat
+  network
+  network-uri
+  newtype
+  old-locale
+  old-time
+  optparse-applicative
+  os-string
+  parallel
+  parsec
+  pretty
+  prettyprinter
+  prettyprinter-ansi-terminal
+  primitive
+  process
+  profunctors
+  protolude
+  random
+  reflection
+  regex-base
+  regex-tdfa
+  resourcet
+  safe
+  scientific
+  semialign
+  semigroupoids
+  semigroups
+  serialise
+  sourcemap
+  split
+  splitmix
+  stm
+  stm-chans
+  streaming-commons
+  strict
+  stringsearch
+  syb
+  tagged
+  tagsoup
+  tasty
+  template-haskell
+  terminfo
+  text
+  text-iso8601
+  text-short
+  th-abstraction
+  th-compat
+  these
+  time
+  time-compat
+  transformers
+  transformers-base
+  transformers-compat
+  typed-process
+  uniplate
+  unix
+  unix-compat
+  unix-time
+  unliftio-core
+  unordered-containers
+  utf8-string
+  uuid-types
+  vector
+  vector-algorithms
+  vector-stream
+  void
+  witherable
+  xss-sanitize
+  zlib
+
+Cabal LICENSE file:
+
+  Copyright (c) 2003-2023, Cabal Development Team.
+  See the AUTHORS file for the full list of copyright holders.
+
+  See */LICENSE for the copyright holders of the subcomponents.
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Isaac Jones nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Cabal-syntax LICENSE file:
+
+  Copyright (c) 2003-2023, Cabal Development Team.
+  See the AUTHORS file for the full list of copyright holders.
+
+  See */LICENSE for the copyright holders of the subcomponents.
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Isaac Jones nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Glob LICENSE file:
+
+  The code in Glob is released under the license below. Copyrights to parts of
+  the code are held by whoever wrote the code in question: see CREDITS.txt for a
+  list of authors.
+
+  Copyright (c) 2008-2018 <authors>
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+      * Neither the name of the project nor the names of its contributors may be
+        used to endorse or promote products derived from this software without
+        specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+  EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OneTuple LICENSE file:
+
+
+  Copyright (c) 2008, John A. Dorsey.
+  All rights reserved.
+
+  Redistribution and use of this software in source and binary forms,
+  with or without modification, are permitted provided that the
+  following conditions are met:
+
+  * Redistributions of source code must retain the above
+    copyright notice, this list of conditions and the
+    following disclaimer.
+
+  * Redistributions in binary form must reproduce the above
+    copyright notice, this list of conditions and the
+    following disclaimer in the documentation and/or other
+    materials provided with the distribution.
+
+  * Neither the name of John Dorsey nor the names of its
+    contributors may be used to endorse or promote products
+    derived from this software without specific prior
+    written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+  OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+QuickCheck LICENSE file:
+
+  (The following is the 3-clause BSD license.)
+
+  Copyright (c) 2000-2019, Koen Claessen
+  Copyright (c) 2006-2008, Björn Bringert
+  Copyright (c) 2009-2019, Nick Smallbone
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+  - Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+  - Neither the names of the copyright owners nor the names of the
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+StateVar LICENSE file:
+
+  Copyright (c) 2014-2015, Edward Kmett
+  Copyright (c) 2009-2021, Sven Panne
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright notice,
+     this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of its contributors may be
+     used to endorse or promote products derived from this software without
+     specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+adjunctions LICENSE file:
+
+  Copyright 2011-2014 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+aeson LICENSE file:
+
+  Copyright (c) 2011, MailRank, Inc. 2014-2021 Aeson project contributors
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+aeson-better-errors LICENSE file:
+
+  Copyright (c) 2015 Harry Garrood
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+alex LICENSE file:
+
+  Copyright (c) 1995-2011, Chris Dornan and Simon Marlow
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of the copyright holders, nor the names of the
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ansi-terminal LICENSE file:
+
+  Copyright (c) 2008, Maximilian Bolingbroke
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification,
+  are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice, this
+    list of conditions and the following disclaimer in the documentation and/or
+    other materials provided with the distribution.
+  * Neither the name of Maximilian Bolingbroke nor the names of other contributors
+    may be used to endorse or promote products derived from this software without
+    specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ansi-terminal-types LICENSE file:
+
+  Copyright (c) 2008, Maximilian Bolingbroke
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification,
+  are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+  * Neither the name of Maximilian Bolingbroke nor the names of other contributors
+    may be used to endorse or promote products derived from this software without
+    specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+array LICENSE file:
+
+  This library (libraries/base) is derived from code from several
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+    * Code from the Haskell Foreign Function Interface specification,
+      which is (c) Manuel M. T. Chakravarty and freely redistributable
+      (but see the full license for restrictions).
+
+  The full text of these licenses is reproduced below.  All of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "The Haskell 98 Foreign Function
+  Interface, An Addendum to the Haskell 98 Report" is distributed under
+  the following license:
+
+    Copyright (c) 2002 Manuel M. T. Chakravarty
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Foreign Function Interface.
+
+  -----------------------------------------------------------------------------
+
+
+assoc LICENSE file:
+
+  Copyright (c) 2017, Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Oleg Grenrus nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+async LICENSE file:
+
+  Copyright (c) 2012, Simon Marlow
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Simon Marlow nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+attoparsec LICENSE file:
+
+  Copyright (c) Lennart Kolmodin
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+auto-update LICENSE file:
+
+  Copyright (c) 2014 Michael Snoyman
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+base LICENSE file:
+
+  This library (libraries/base) is derived from code from several
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+    * Code from the Haskell Foreign Function Interface specification,
+      which is (c) Manuel M. T. Chakravarty and freely redistributable
+      (but see the full license for restrictions).
+
+  The full text of these licenses is reproduced below.  All of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "The Haskell 98 Foreign Function
+  Interface, An Addendum to the Haskell 98 Report" is distributed under
+  the following license:
+
+    Copyright (c) 2002 Manuel M. T. Chakravarty
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Foreign Function Interface.
+
+  -----------------------------------------------------------------------------
+
+base-orphans LICENSE file:
+
+  Copyright (c) 2015-2017 Simon Hengel <sol@typeful.net>, João Cristóvão <jmacristovao@gmail.com>, Ryan Scott <ryan.gl.scott@gmail.com>
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+basement LICENSE file:
+
+  Copyright (c) 2015-2017 Vincent Hanquez <vincent@snarc.org>
+  Copyright (c) 2017-2019 Foundation Maintainers
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+bifunctors LICENSE file:
+
+  Copyright 2008-2016 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+binary LICENSE file:
+
+  Copyright (c) Lennart Kolmodin
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+bitvec LICENSE file:
+
+  Copyright (c) 2019-2022 Andrew Lelechenko, 2012-2016 James Cook
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * The names of the contributors may not be used to endorse may be
+        used to endorse or promote products derived from this software
+        without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+blaze-builder LICENSE file:
+
+  Copyright Jasper Van der Jeugt 2010, Simon Meier 2010 & 2011
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Jasper Van der Jeugt nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+blaze-html LICENSE file:
+
+  Copyright Jasper Van der Jeugt 2010
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Jasper Van der Jeugt nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+blaze-markup LICENSE file:
+
+  Copyright Jasper Van der Jeugt 2010
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Jasper Van der Jeugt nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+boring LICENSE file:
+
+  Copyright (c) 2017, Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Oleg Grenrus nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+bower-json LICENSE file:
+
+  Copyright (c) 2015 Harry Garrood
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+boxes LICENSE file:
+
+  Copyright (c) Brent Yorgey 2008
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of other contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  All other rights are reserved.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+bytestring LICENSE file:
+
+  Copyright (c) Don Stewart 2005-2009
+            (c) Duncan Coutts 2006-2015
+            (c) David Roundy 2003-2005
+            (c) Simon Meier 2010-2011
+            (c) Koz Ross 2021
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+call-stack LICENSE file:
+
+  Copyright (c) 2016-2021 Simon Hengel <sol@typeful.net>
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+  THE SOFTWARE.
+
+cborg LICENSE file:
+
+  Copyright (c) 2015-2017 Duncan Coutts,
+                2015-2017 Well-Typed LLP,
+                2015 IRIS Connect Ltd.
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Duncan Coutts nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+character-ps LICENSE file:
+
+  Copyright (c) 2023, Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Oleg Grenrus nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cheapskate LICENSE file:
+
+  Copyright (c) 2013, John MacFarlane
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of John MacFarlane nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+clock LICENSE file:
+
+  Copyright (c) 2009-2022, Clock Contributors
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * The names of contributors may not be used to endorse or promote
+        products derived from this software without specific prior
+        written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+colour LICENSE file:
+
+  Copyright (c) 2008, 2009
+  Russell O'Connor
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+  THE SOFTWARE.
+
+comonad LICENSE file:
+
+  Copyright 2008-2014 Edward Kmett
+  Copyright 2004-2008 Dave Menendez
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+conduit LICENSE file:
+
+  Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+conduit-extra LICENSE file:
+
+  Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+constraints LICENSE file:
+
+  Copyright 2011-2015 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+containers LICENSE file:
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+contravariant LICENSE file:
+
+  Copyright 2007-2015 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+cryptonite LICENSE file:
+
+  Copyright (c) 2006-2015 Vincent Hanquez <vincent@snarc.org>
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+css-text LICENSE file:
+
+  Copyright (c) 2010 Michael Snoyman, http://www.yesodweb.com/
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+data-default LICENSE file:
+
+  Copyright (c) 2013, Lukas Mai
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Lukas Mai nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+data-default-class LICENSE file:
+
+  Copyright (c) 2013, Lukas Mai
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Lukas Mai nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+data-default-instances-containers LICENSE file:
+
+  Copyright (c) 2013, Lukas Mai
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Lukas Mai nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+data-default-instances-dlist LICENSE file:
+
+  Copyright (c) 2013, Lukas Mai
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Lukas Mai nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+data-default-instances-old-locale LICENSE file:
+
+  Copyright (c) 2013, Lukas Mai
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Lukas Mai nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+data-fix LICENSE file:
+
+  Copyright Anton Kholomiov 2010
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Anton Kholomiov nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+data-ordlist LICENSE file:
+
+  Copyright (c) 2009-2010, Melding Monads
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+      * Neither the name of Melding Monads nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+deepseq LICENSE file:
+
+  This library (deepseq) is derived from code from the GHC project which
+  is largely (c) The University of Glasgow, and distributable under a
+  BSD-style license (see below).
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2001-2009, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+directory LICENSE file:
+
+  This library (libraries/base) is derived from code from two
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+  The full text of these licenses is reproduced below.  Both of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+distributive LICENSE file:
+
+  Copyright 2011-2016 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+dlist LICENSE file:
+
+  Copyright © 2006-2009 Don Stewart, 2013-2020 Sean Leather, contributors
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification,
+  are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright notice, this
+     list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright notice,
+     this list of conditions and the following disclaimer in the documentation
+     and/or other materials provided with the distribution.
+
+  3. Neither the name of the copyright holders nor the names of other contributors
+     may be used to endorse or promote products derived from this software without
+     specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+easy-file LICENSE file:
+
+  Copyright (c) 2009, IIJ Innovation Institute Inc.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in
+      the documentation and/or other materials provided with the
+      distribution.
+    * Neither the name of the copyright holders nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+edit-distance LICENSE file:
+
+  Copyright (c) 2008-2013 Maximilian Bolingbroke
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification, are permitted
+  provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright notice, this list of
+        conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright notice, this list of
+        conditions and the following disclaimer in the documentation and/or other materials
+        provided with the distribution.
+      * Neither the name of Maximilian Bolingbroke nor the names of other contributors may be used to
+        endorse or promote products derived from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+exceptions LICENSE file:
+
+  Copyright 2013-2015 Edward Kmett
+  Copyright 2012 Google Inc.
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+fast-logger LICENSE file:
+
+  Copyright (c) 2009, IIJ Innovation Institute Inc.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in
+      the documentation and/or other materials provided with the
+      distribution.
+    * Neither the name of the copyright holders nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+file-embed LICENSE file:
+
+  The following license covers this documentation, and the source code, except
+  where otherwise indicated.
+
+  Copyright 2008, Michael Snoyman. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+  EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+filepath LICENSE file:
+
+  Copyright Neil Mitchell 2005-2020.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Neil Mitchell nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+free LICENSE file:
+
+  Copyright 2008-2013 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+generically LICENSE file:
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Herbert Valerio Riedel nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ghc-bignum LICENSE file:
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2020, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+ghc-prim LICENSE file:
+
+  This library (libraries/ghc-prim) is derived from code from several
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+  The full text of these licenses is reproduced below.  All of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+
+half LICENSE file:
+
+  Copyright 2014 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+happy LICENSE file:
+
+  The Happy License
+  -----------------
+
+  Copyright 2001, Simon Marlow and Andy Gill.  All rights reserved.
+
+  Extensions to implement Tomita's Generalized LR parsing:
+    Copyright 2004, University of Durham, Paul Callaghan and Ben Medlock.
+    All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY
+  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+hashable LICENSE file:
+
+  Copyright Milan Straka 2010
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Milan Straka nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+haskeline LICENSE file:
+
+  Copyright 2007 Judah Jacobson
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  3. Neither the name of the copyright holder nor the names of its contributors
+  may be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+indexed-traversable LICENSE file:
+
+  Copyright 2012-2016 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+indexed-traversable-instances LICENSE file:
+
+  Copyright 2012-2016 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+integer-conversion LICENSE file:
+
+  Copyright (c) 2023, Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Oleg Grenrus nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+integer-gmp LICENSE file:
+
+  Copyright (c) 2014, Herbert Valerio Riedel
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Herbert Valerio Riedel nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+integer-logarithms LICENSE file:
+
+  Copyright (c) 2011 Daniel Fischer, 2017 Oleg Grenrus
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+   associated documentation files (the "Software"), to deal in the Software without restriction,
+   including without limitation the rights to use, copy, modify, merge, publish, distribute,
+   sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+   furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in all copies or
+  substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+  LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+invariant LICENSE file:
+
+  Copyright (c) 2012-2017, University of Kansas
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, this
+      list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+kan-extensions LICENSE file:
+
+  Copyright 2008-2016 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+language-javascript LICENSE file:
+
+  Copyright (c)2010, Alan Zimmerman
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Alan Zimmerman nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+lens LICENSE file:
+
+  Copyright 2012-2016 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+lifted-async LICENSE file:
+
+  Copyright (c) 2012-2017, Mitsutoshi Aoe
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Mitsutoshi Aoe nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+lifted-base LICENSE file:
+
+  Copyright © 2010-2012, Bas van Dijk, Anders Kaseorg
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+  • Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  • Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+  • Neither the name of the author nor the names of other contributors
+    may be used to endorse or promote products derived from this
+    software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
+  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+memory LICENSE file:
+
+  Copyright (c) 2015-2018 Vincent Hanquez <vincent@snarc.org>
+  Copyright (c) 2017-2018 Nicolas Di Prima <nicolas@primetype.co.uk>
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+monad-control LICENSE file:
+
+  Copyright © 2010, Bas van Dijk, Anders Kaseorg
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+  • Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  • Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+  • Neither the name of the author nor the names of other contributors
+    may be used to endorse or promote products derived from this
+    software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
+  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+monad-logger LICENSE file:
+
+  Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+mono-traversable LICENSE file:
+
+  Copyright (c) 2013 Michael Snoyman, http://www.fpcomplete.com/
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+monoidal-containers LICENSE file:
+
+  Copyright (c) 2015, Ben Gamari
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Ben Gamari nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+mtl LICENSE file:
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+mtl-compat LICENSE file:
+
+  Copyright (c) 2015-2017, Ryan Scott
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Ryan Scott nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+network LICENSE file:
+
+  Copyright (c) 2002-2010, The University Court of the University of Glasgow.
+  Copyright (c) 2007-2010, Johan Tibell
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+network-uri LICENSE file:
+
+  Copyright (c) 2002-2010, The University Court of the University of Glasgow.
+  Copyright (c) 2007-2010, Johan Tibell
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+newtype LICENSE file:
+
+  Copyright (c) 2011, Darius Jahandarie
+                2019, Herbert Valerio Riedel
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Darius Jahandarie nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+old-locale LICENSE file:
+
+  This library (libraries/base) is derived from code from two
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+  The full text of these licenses is reproduced below.  Both of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+old-time LICENSE file:
+
+  This library (libraries/base) is derived from code from two
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+  The full text of these licenses is reproduced below.  Both of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+optparse-applicative LICENSE file:
+
+  Copyright (c) 2012, Paolo Capriotti
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Paolo Capriotti nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+os-string LICENSE file:
+
+  Copyright Neil Mitchell 2005-2020.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Neil Mitchell nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+parallel LICENSE file:
+
+  This library (libraries/parallel) is derived from code from
+  the GHC project which is largely (c) The University of
+  Glasgow, and distributable under a BSD-style license (see below).
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+parsec LICENSE file:
+
+  Copyright 1999-2000, Daan Leijen; 2007, Paolo Martini. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+  This software is provided by the copyright holders "as is" and any express or
+  implied warranties, including, but not limited to, the implied warranties of
+  merchantability and fitness for a particular purpose are disclaimed. In no
+  event shall the copyright holders be liable for any direct, indirect,
+  incidental, special, exemplary, or consequential damages (including, but not
+  limited to, procurement of substitute goods or services; loss of use, data,
+  or profits; or business interruption) however caused and on any theory of
+  liability, whether in contract, strict liability, or tort (including
+  negligence or otherwise) arising in any way out of the use of this software,
+  even if advised of the possibility of such damage.
+
+pretty LICENSE file:
+
+  This library (libraries/pretty) is derived from code from
+  the GHC project which is largely (c) The University of
+  Glasgow, and distributable under a BSD-style license (see below).
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+prettyprinter LICENSE file:
+
+  Copyright 2008, Daan Leijen and Max Bolingbroke, 2016 David Luposchainsky. All
+  rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification,
+  are permitted provided that the following conditions are met:
+
+    - Redistributions of source code must retain the above copyright notice, this
+      list of conditions and the following disclaimer.
+
+    - Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+
+  This software is provided by the copyright holders "as is" and any express or
+  implied warranties, including, but not limited to, the implied warranties of
+  merchantability and fitness for a particular purpose are disclaimed. In no event
+  shall the copyright holders be liable for any direct, indirect, incidental,
+  special, exemplary, or consequential damages (including, but not limited to,
+  procurement of substitute goods or services; loss of use, data, or profits; or
+  business interruption) however caused and on any theory of liability, whether in
+  contract, strict liability, or tort (including negligence or otherwise) arising
+  in any way out of the use of this software, even if advised of the possibility
+  of such damage.
+
+prettyprinter-ansi-terminal LICENSE file:
+
+  Copyright 2008, Daan Leijen and Max Bolingbroke, 2016 David Luposchainsky. All
+  rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification,
+  are permitted provided that the following conditions are met:
+
+    - Redistributions of source code must retain the above copyright notice, this
+      list of conditions and the following disclaimer.
+
+    - Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+
+  This software is provided by the copyright holders "as is" and any express or
+  implied warranties, including, but not limited to, the implied warranties of
+  merchantability and fitness for a particular purpose are disclaimed. In no event
+  shall the copyright holders be liable for any direct, indirect, incidental,
+  special, exemplary, or consequential damages (including, but not limited to,
+  procurement of substitute goods or services; loss of use, data, or profits; or
+  business interruption) however caused and on any theory of liability, whether in
+  contract, strict liability, or tort (including negligence or otherwise) arising
+  in any way out of the use of this software, even if advised of the possibility
+  of such damage.
+
+primitive LICENSE file:
+
+  Copyright (c) 2008-2009, Roman Leshchinskiy
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+
+process LICENSE file:
+
+  This library (libraries/process) is derived from code from two
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+  The full text of these licenses is reproduced below.  Both of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+profunctors LICENSE file:
+
+  Copyright 2011-2015 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+protolude LICENSE file:
+
+  Copyright (c) 2016-2020, Stephen Diehl
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to
+  deal in the Software without restriction, including without limitation the
+  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+  sell copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+  IN THE SOFTWARE.
+
+random LICENSE file:
+
+  This library (libraries/base) is derived from code from two
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+  The full text of these licenses is reproduced below.  Both of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+reflection LICENSE file:
+
+  Copyright (c) 2009-2013 Edward Kmett
+  Copyright (c) 2004 Oleg Kiselyov and Chung-chieh Shan
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Edward Kmett nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+regex-base LICENSE file:
+
+  Copyright (c) 2007, Christopher Kuklewicz
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+      * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+regex-tdfa LICENSE file:
+
+  This module is under this "3 clause" BSD license:
+
+  Copyright (c) 2007-2009, Christopher Kuklewicz
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+      * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+resourcet LICENSE file:
+
+  Copyright (c)2011, Michael Snoyman
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Michael Snoyman nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+safe LICENSE file:
+
+  Copyright Neil Mitchell 2007-2024.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Neil Mitchell nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+scientific LICENSE file:
+
+  Copyright (c) 2013, Bas van Dijk
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Bas van Dijk nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+semialign LICENSE file:
+
+  Copyright (c) 2012, C. McCann, 2015-2019 Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of C. McCann nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+semigroupoids LICENSE file:
+
+  Copyright 2011-2015 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+semigroups LICENSE file:
+
+  Copyright 2011-2015 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+serialise LICENSE file:
+
+  Copyright (c) 2017, Duncan Coutts
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Duncan Coutts nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+sourcemap LICENSE file:
+
+  Copyright (c) 2012, Chris Done
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Chris Done nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+split LICENSE file:
+
+  Copyright (c) 2008 Brent Yorgey, Louis Wasserman
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of other contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+splitmix LICENSE file:
+
+  Copyright (c) 2017, Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Oleg Grenrus nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+stm LICENSE file:
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+stm-chans LICENSE file:
+
+  === stm-chans license ===
+
+  Copyright (c) 2011--2013, wren gayle romano.
+  ALL RIGHTS RESERVED.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of the copyright holders nor the names of
+        other contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+
+streaming-commons LICENSE file:
+
+  The MIT License (MIT)
+
+  Copyright (c) 2014 FP Complete
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in all
+  copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+
+strict LICENSE file:
+
+  Copyright (c) Roman Leshchinskiy 2006-2007
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+stringsearch LICENSE file:
+
+  Copyright (c)2010, Daniel Fischer
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Daniel Fischer nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syb LICENSE file:
+
+  This library (libraries/syb) is derived from code from several
+  sources:
+
+    * Code from the GHC project which is largely (c) The University of
+      Glasgow, and distributable under a BSD-style license (see below),
+
+    * Code from the Haskell 98 Report which is (c) Simon Peyton Jones
+      and freely redistributable (but see the full license for
+      restrictions).
+
+    * Code from the Haskell Foreign Function Interface specification,
+      which is (c) Manuel M. T. Chakravarty and freely redistributable
+      (but see the full license for restrictions).
+
+  The full text of these licenses is reproduced below.  All of the
+  licenses are BSD-style or compatible.
+
+  -----------------------------------------------------------------------------
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "Report on the Programming Language
+  Haskell 98", is distributed under the following license:
+
+    Copyright (c) 2002 Simon Peyton Jones
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Language.
+
+  -----------------------------------------------------------------------------
+
+  Code derived from the document "The Haskell 98 Foreign Function
+  Interface, An Addendum to the Haskell 98 Report" is distributed under
+  the following license:
+
+    Copyright (c) 2002 Manuel M. T. Chakravarty
+
+    The authors intend this Report to belong to the entire Haskell
+    community, and so we grant permission to copy and distribute it for
+    any purpose, provided that it is reproduced in its entirety,
+    including this Notice.  Modified versions of this Report may also be
+    copied and distributed for any purpose, provided that the modified
+    version is clearly presented as such, and that it does not claim to
+    be a definition of the Haskell 98 Foreign Function Interface.
+
+  -----------------------------------------------------------------------------
+
+tagged LICENSE file:
+
+  Copyright (c) 2009-2015 Edward Kmett
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Edward Kmett nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+tagsoup LICENSE file:
+
+  Copyright Neil Mitchell 2006-2019.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Neil Mitchell nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+tasty LICENSE file:
+
+  Copyright (c) 2013 Roman Cheplyaka
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+  THE SOFTWARE.
+
+template-haskell LICENSE file:
+
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2002-2007, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+
+terminfo LICENSE file:
+
+  Copyright 2007, Judah Jacobson.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  3. Neither the name of the copyright holder nor the names of its contributors
+  may be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+text LICENSE file:
+
+  Copyright (c) 2008-2009, Tom Harper
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+text-iso8601 LICENSE file:
+
+  Copyright (c) 2023 Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+text-short LICENSE file:
+
+  Copyright (c) 2017, Herbert Valerio Riedel
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Herbert Valerio Riedel nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+th-abstraction LICENSE file:
+
+  Copyright (c) 2017-2020 Eric Mertens
+
+  Permission to use, copy, modify, and/or distribute this software for any purpose
+  with or without fee is hereby granted, provided that the above copyright notice
+  and this permission notice appear in all copies.
+
+  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+  OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+  THIS SOFTWARE.
+
+th-compat LICENSE file:
+
+  Copyright (c) 2020, Ryan Scott
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Ryan Scott nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+these LICENSE file:
+
+  Copyright (c) 2012, C. McCann, 2015-2019 Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of C. McCann nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+time LICENSE file:
+
+  TimeLib is Copyright (c) Ashley Yakeley and contributors, 2004-2022. All rights reserved.
+  Certain sections are Copyright 2004, The University Court of the University of Glasgow. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+  - Neither name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+time-compat LICENSE file:
+
+  Copyright (c) 2019 time contibutors, Oleg Grenrus
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Oleg Grenrus nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+transformers LICENSE file:
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+transformers-base LICENSE file:
+
+  Copyright (c) 2011, Mikhail Vorozhtsov, Bas van Dijk
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+  - Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+  - Neither the names of the copyright owners nor the names of the
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+transformers-compat LICENSE file:
+
+  Copyright 2012-2015 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+typed-process LICENSE file:
+
+  Copyright (c) 2016 FP Complete, https://www.fpcomplete.com/
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+uniplate LICENSE file:
+
+  Copyright Neil Mitchell 2006-2020.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Neil Mitchell nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+unix LICENSE file:
+
+  The Glasgow Haskell Compiler License
+
+  Copyright 2004, The University Court of the University of Glasgow.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+unix-compat LICENSE file:
+
+  BSD 3-Clause License
+
+  Copyright (c) 2007-2008, Björn Bringert
+  Copyright (c) 2007-2009, Duncan Coutts
+  Copyright (c) 2010-2011, Jacob Stanley
+  Copyright (c)      2011, Bryan O'Sullivan
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+  - Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+  - Neither the names of the copyright owners nor the names of the
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+unix-time LICENSE file:
+
+  Copyright (c) 2009, IIJ Innovation Institute Inc.
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in
+      the documentation and/or other materials provided with the
+      distribution.
+    * Neither the name of the copyright holders nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+unliftio-core LICENSE file:
+
+  Copyright (c) 2017 FP Complete
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+unordered-containers LICENSE file:
+
+  Copyright (c) 2010, Johan Tibell
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Johan Tibell nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+utf8-string LICENSE file:
+
+  * Copyright (c) 2007, Galois Inc.
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions are met:
+  *     * Redistributions of source code must retain the above copyright
+  *       notice, this list of conditions and the following disclaimer.
+  *     * Redistributions in binary form must reproduce the above copyright
+  *       notice, this list of conditions and the following disclaimer in the
+  *       documentation and/or other materials provided with the distribution.
+  *     * Neither the name of Galois Inc. nor the
+  *       names of its contributors may be used to endorse or promote products
+  *       derived from this software without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY Galois Inc. ``AS IS'' AND ANY
+  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL Galois Inc. BE LIABLE FOR ANY
+  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+uuid-types LICENSE file:
+
+  Copyright (c) 2008, Antoine Latter
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+      * Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+      * The names of the authors may not be used to endorse or promote
+  products derived from this software without specific prior written
+  permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+vector LICENSE file:
+
+  Copyright (c) 2008-2012, Roman Leshchinskiy
+                2020-2022, Alexey Kuleshevich
+                2020-2022, Aleksey Khudyakov
+                2020-2022, Andrew Lelechenko
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+vector-algorithms LICENSE file:
+
+  Copyright (c) 2015 Dan Doel
+  Copyright (c) 2015 Tim Baumann
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+  ------------------------------------------------------------------------------
+
+  The code in Data.Array.Vector.Algorithms.Mutable.Optimal is adapted from a C
+  algorithm for the same purpose. The following is the copyright notice for said
+  C code:
+
+  Copyright (c) 2004 Paul Hsieh
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+      Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+
+      Neither the name of sorttest nor the names of its contributors may be
+      used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+vector-stream LICENSE file:
+
+  Copyright (c) 2008-2012, Roman Leshchinskiy
+                2020-2022, Alexey Kuleshevich
+                2020-2022, Aleksey Khudyakov
+                2020-2022, Andrew Lelechenko
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+void LICENSE file:
+
+  Copyright 2015 Edward Kmett
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the author nor the names of his contributors
+     may be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+witherable LICENSE file:
+
+  Copyright (c) 2014, Fumiaki Kinoshita
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of Fumiaki Kinoshita nor the names of other
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+xss-sanitize LICENSE file:
+
+  The following license covers this documentation, and the source code, except
+  where otherwise indicated.
+
+  Copyright 2010, Greg Weber. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+  EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+zlib LICENSE file:
+
+  Copyright (c) 2006-2016, Duncan Coutts
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright notice,
+     this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. This clause is intentionally left blank.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+============================================================================
+
+GNU LESSER GENERAL PUBLIC LICENSE
+Version 3, 29 June 2007
+
+Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+This version of the GNU Lesser General Public License incorporates the terms
+and conditions of version 3 of the GNU General Public License, supplemented
+by the additional permissions listed below.
+
+0. Additional Definitions.
+
+As used herein, “this License” refers to version 3 of the GNU Lesser General
+Public License, and the “GNU GPL” refers to version 3 of the
+GNU General Public License.
+
+“The Library” refers to a covered work governed by this License, other than
+an Application or a Combined Work as defined below.
+
+An “Application” is any work that makes use of an interface provided by the
+Library, but which is not otherwise based on the Library. Defining a subclass
+of a class defined by the Library is deemed a mode of using an interface
+provided by the Library.
+
+A “Combined Work” is a work produced by combining or linking an Application
+with the Library. The particular version of the Library with which the
+Combined Work was made is also called the “Linked Version”.
+
+The “Minimal Corresponding Source” for a Combined Work means the Corresponding
+Source for the Combined Work, excluding any source code for portions of the
+Combined Work that, considered in isolation, are based on the Application,
+and not on the Linked Version.
+
+The “Corresponding Application Code” for a Combined Work means the object code
+and/or source code for the Application, including any data and utility programs
+needed for reproducing the Combined Work from the Application, but excluding
+the System Libraries of the Combined Work.
+
+1. Exception to Section 3 of the GNU GPL.
+
+You may convey a covered work under sections 3 and 4 of this License without
+being bound by section 3 of the GNU GPL.
+
+2. Conveying Modified Versions.
+
+If you modify a copy of the Library, and, in your modifications, a facility
+refers to a function or data to be supplied by an Application that uses the
+facility (other than as an argument passed when the facility is invoked),
+then you may convey a copy of the modified version:
+
+    a) under this License, provided that you make a good faith effort to
+    ensure that, in the event an Application does not supply the function or
+    data, the facility still operates, and performs whatever part of its
+    purpose remains meaningful, or
+
+    b) under the GNU GPL, with none of the additional permissions of this
+    License applicable to that copy.
+
+3. Object Code Incorporating Material from Library Header Files.
+
+The object code form of an Application may incorporate material from a header
+file that is part of the Library. You may convey such object code under terms
+of your choice, provided that, if the incorporated material is not limited to
+numerical parameters, data structure layouts and accessors, or small macros,
+inline functions and templates (ten or fewer lines in length),
+you do both of the following:
+
+    a) Give prominent notice with each copy of the object code that the Library
+    is used in it and that the Library and its use are covered by this License.
+
+    b) Accompany the object code with a copy of the GNU GPL
+    and this license document.
+
+4. Combined Works.
+
+You may convey a Combined Work under terms of your choice that, taken together,
+effectively do not restrict modification of the portions of the Library
+contained in the Combined Work and reverse engineering for debugging such
+modifications, if you also do each of the following:
+
+    a) Give prominent notice with each copy of the Combined Work that the
+    Library is used in it and that the Library and its use are covered
+    by this License.
+
+    b) Accompany the Combined Work with a copy of the GNU GPL and
+    this license document.
+
+    c) For a Combined Work that displays copyright notices during execution,
+    include the copyright notice for the Library among these notices, as well
+    as a reference directing the user to the copies of the GNU GPL
+    and this license document.
+
+    d) Do one of the following:
+
+        0) Convey the Minimal Corresponding Source under the terms of this
+        License, and the Corresponding Application Code in a form suitable
+        for, and under terms that permit, the user to recombine or relink
+        the Application with a modified version of the Linked Version to
+        produce a modified Combined Work, in the manner specified by section 6
+        of the GNU GPL for conveying Corresponding Source.
+
+        1) Use a suitable shared library mechanism for linking with the
+        Library. A suitable mechanism is one that (a) uses at run time a
+        copy of the Library already present on the user's computer system,
+        and (b) will operate properly with a modified version of the Library
+        that is interface-compatible with the Linked Version.
+
+    e) Provide Installation Information, but only if you would otherwise be
+    required to provide such information under section 6 of the GNU GPL, and
+    only to the extent that such information is necessary to install and
+    execute a modified version of the Combined Work produced by recombining
+    or relinking the Application with a modified version of the Linked Version.
+    (If you use option 4d0, the Installation Information must accompany the
+    Minimal Corresponding Source and Corresponding Application Code. If you
+    use option 4d1, you must provide the Installation Information in the
+    manner specified by section 6 of the GNU GPL for
+    conveying Corresponding Source.)
+
+5. Combined Libraries.
+
+You may place library facilities that are a work based on the Library side by
+side in a single library together with other library facilities that are not
+Applications and are not covered by this License, and convey such a combined
+library under terms of your choice, if you do both of the following:
+
+    a) Accompany the combined library with a copy of the same work based on
+    the Library, uncombined with any other library facilities, conveyed under
+    the terms of this License.
+
+    b) Give prominent notice with the combined library that part of it is a
+    work based on the Library, and explaining where to find the accompanying
+    uncombined form of the same work.
+
+6. Revised Versions of the GNU Lesser General Public License.
+
+The Free Software Foundation may publish revised and/or new versions of the
+GNU Lesser General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library as you
+received it specifies that a certain numbered version of the GNU Lesser
+General Public License “or any later version” applies to it, you have the
+option of following the terms and conditions either of that published version
+or of any later version published by the Free Software Foundation. If the
+Library as you received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser General
+Public License ever published by the Free Software Foundation.
+
+If the Library as you received it specifies that a proxy can decide whether
+future versions of the GNU Lesser General Public License shall apply, that
+proxy's public statement of acceptance of any version is permanent
+authorization for you to choose that version for the Library.
 
diff --git a/app/Command/Docs.hs b/app/Command/Docs.hs
--- a/app/Command/Docs.hs
+++ b/app/Command/Docs.hs
@@ -6,7 +6,7 @@
 import Command.Docs.Html (asHtml, writeHtmlModules)
 import Command.Docs.Markdown (asMarkdown, writeMarkdownModules)
 import Control.Applicative (Alternative(..), optional)
-import Control.Monad.Writer (when)
+import Control.Monad (when)
 import Control.Monad.Trans.Except (runExceptT)
 import Data.Maybe (fromMaybe)
 import Data.Text qualified as T
@@ -15,7 +15,8 @@
 import Language.PureScript.Docs.Tags (dumpCtags, dumpEtags)
 import Language.PureScript.Glob (PSCGlobs(..), toInputGlobs, warnFileTypeNotFound)
 import Options.Applicative qualified as Opts
-import Text.PrettyPrint.ANSI.Leijen qualified as PP
+import Prettyprinter qualified as PP
+import Prettyprinter.Render.Terminal (AnsiStyle)
 import SharedCLI qualified
 import System.Directory (getCurrentDirectory, createDirectoryIfMissing, removeFile)
 import System.Exit (exitFailure)
@@ -113,10 +114,10 @@
     Ctags -> "tags"
 
 pscDocsOptions :: Opts.Parser PSCDocsOptions
-pscDocsOptions = 
-  PSCDocsOptions <$> format 
-                 <*> output 
-                 <*> compileOutputDir 
+pscDocsOptions =
+  PSCDocsOptions <$> format
+                 <*> output
+                 <*> compileOutputDir
                  <*> many SharedCLI.inputFile
                  <*> SharedCLI.globInputFile
                  <*> many SharedCLI.excludeFiles
@@ -150,9 +151,9 @@
 infoModList = Opts.fullDesc <> footerInfo where
   footerInfo = Opts.footerDoc $ Just examples
 
-examples :: PP.Doc
+examples :: PP.Doc AnsiStyle
 examples =
-  PP.vcat $ map PP.text
+  PP.vcat
     [ "Examples:"
     , "  write documentation for all modules to ./generated-docs:"
     , "    purs docs \"src/**/*.purs\" \".psc-package/*/*/*/src/**/*.purs\""
diff --git a/app/Command/Docs/Html.hs b/app/Command/Docs/Html.hs
--- a/app/Command/Docs/Html.hs
+++ b/app/Command/Docs/Html.hs
@@ -9,7 +9,7 @@
 
 import Control.Applicative (Alternative(..))
 import Control.Arrow ((&&&))
-import Control.Monad.Writer (guard)
+import Control.Monad (guard)
 import Data.List (sort)
 import Data.Text (Text)
 import Data.Text.Lazy (toStrict)
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -13,9 +13,10 @@
 import Control.Monad (join)
 import Data.Foldable (fold)
 import Options.Applicative qualified as Opts
+import Prettyprinter qualified as Doc
+import Prettyprinter.Render.Terminal (AnsiStyle)
 import System.Environment (getArgs)
 import System.IO qualified as IO
-import Text.PrettyPrint.ANSI.Leijen qualified as Doc
 import Version (versionString)
 
 
@@ -39,11 +40,11 @@
             "For example, `purs compile --help` displays options specific to the `compile` command."
         , Doc.hardline
         , Doc.hardline
-        , Doc.text $ "purs " ++ versionString
+        , Doc.pretty $ "purs " ++ versionString
         ]
 
-    para :: String -> Doc.Doc
-    para = foldr (Doc.</>) Doc.empty . map Doc.text . words
+    para :: String -> Doc.Doc AnsiStyle
+    para = foldr (\x y -> x <> Doc.softline <> y) mempty . map Doc.pretty . words
 
     -- | Displays full command help when invoked with no arguments.
     execParserPure :: Opts.ParserInfo a -> [String] -> Opts.ParserResult a
diff --git a/purescript.cabal b/purescript.cabal
--- a/purescript.cabal
+++ b/purescript.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               purescript
-version:            0.15.15
+version:            0.15.16
 license:            BSD-3-Clause
 license-file:       LICENSE
 copyright:
@@ -55,11 +55,19 @@
 
     default:     False
 
+flag static
+    description:
+        Builds a statically-linked version of the PureScript compiler.
+
+    default:     False
+    manual:      True
+
 library
     exposed-modules:
         Control.Monad.Logger
         Control.Monad.Supply
         Control.Monad.Supply.Class
+        Control.PatternArrows
         Language.PureScript
         Language.PureScript.AST
         Language.PureScript.AST.Binders
@@ -234,7 +242,7 @@
         Language.PureScript.Types
         System.IO.UTF8
 
-    build-tool-depends: happy:happy ==1.20.0
+    build-tool-depends: happy:happy ==2.0.2
     hs-source-dirs:     src
     other-modules:
         Data.Text.PureScript
@@ -261,69 +269,67 @@
         -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures
         -Wno-monomorphism-restriction -Wno-missing-deriving-strategies
         -Wno-missing-export-lists -Wno-missing-kind-signatures
-        -Wno-partial-fields
+        -Wno-partial-fields -Wno-missing-role-annotations
 
     build-depends:
-        aeson >=2.0.3.0 && <2.1,
-        aeson-better-errors >=0.9.1.1 && <0.10,
-        ansi-terminal >=0.11.3 && <0.12,
-        array >=0.5.4.0 && <0.6,
-        base >=4.16.2.0 && <4.17,
-        blaze-html >=0.9.1.2 && <0.10,
+        aeson >=2.2.3.0 && <2.3,
+        aeson-better-errors >=0.9.1.3 && <0.10,
+        ansi-terminal >=1.1.2 && <1.2,
+        array >=0.5.8.0 && <0.6,
+        base >=4.19.2.0 && <4.20,
+        blaze-html >=0.9.2.0 && <0.10,
         bower-json >=1.1.0.0 && <1.2,
         boxes >=0.1.5 && <0.2,
-        bytestring >=0.11.3.1 && <0.12,
-        Cabal >=3.6.3.0 && <3.7,
-        cborg >=0.2.7.0 && <0.3,
-        serialise >=0.2.5.0 && <0.3,
+        bytestring >=0.12.1.0 && <0.13,
+        Cabal >=3.10.3.0 && <3.11,
+        cborg >=0.2.10.0 && <0.3,
         cheapskate >=0.1.1.2 && <0.2,
-        clock >=0.8.3 && <0.9,
-        containers >=0.6.5.1 && <0.7,
+        clock >=0.8.4 && <0.9,
+        containers >=0.6.8 && <0.7,
         cryptonite >=0.30 && <0.31,
         data-ordlist >=0.4.7.0 && <0.5,
-        deepseq >=1.4.6.1 && <1.5,
-        directory >=1.3.6.2 && <1.4,
+        deepseq >=1.5.1.0 && <1.6,
+        directory >=1.3.8.5 && <1.4,
         dlist >=1.0 && <1.1,
         edit-distance >=0.2.2.1 && <0.3,
-        file-embed >=0.0.15.0 && <0.1,
-        filepath >=1.4.2.2 && <1.5,
+        file-embed >=0.0.16.0 && <0.1,
+        filepath >=1.4.301.0 && <1.5,
         Glob >=0.10.2 && <0.11,
-        haskeline >=0.8.2 && <0.9,
+        haskeline >=0.8.2.1 && <0.9,
         language-javascript ==0.7.0.0,
-        lens >=5.1.1 && <5.2,
-        lifted-async >=0.10.2.2 && <0.11,
+        lens >=5.3.4 && <5.4,
+        lifted-async >=0.10.2.7 && <0.11,
         lifted-base >=0.2.3.12 && <0.3,
-        memory >=0.17.0 && <0.18,
+        memory >=0.18.0 && <0.19,
         monad-control >=1.0.3.1 && <1.1,
-        monad-logger >=0.3.36 && <0.4,
-        monoidal-containers >=0.6.2.0 && <0.7,
-        mtl >=2.2.2 && <2.3,
+        monad-logger >=0.3.42 && <0.4,
+        monoidal-containers >=0.6.6.0 && <0.7,
+        mtl >=2.3.1 && <2.4,
         parallel >=3.2.2.0 && <3.3,
-        parsec >=3.1.15.0 && <3.2,
-        pattern-arrows >=0.0.2 && <0.1,
-        process ==1.6.13.1,
-        protolude >=0.3.1 && <0.4,
-        regex-tdfa >=1.3.1.2 && <1.4,
-        safe >=0.3.19 && <0.4,
-        scientific >=0.3.7.0 && <0.4,
+        parsec >=3.1.17.0 && <3.2,
+        process >=1.6.25.0 && <1.7,
+        protolude >=0.3.4 && <0.4,
+        regex-tdfa >=1.3.2.3 && <1.4,
+        safe >=0.3.21 && <0.4,
+        scientific >=0.3.8.0 && <0.4,
+        semialign >=1.3.1 && <1.4,
         semigroups >=0.20 && <0.21,
-        semialign >=1.2.0.1 && <1.3,
+        serialise >=0.2.6.1 && <0.3,
         sourcemap >=0.1.7 && <0.2,
-        stm >=2.5.0.2 && <2.6,
+        stm >=2.5.3.1 && <2.6,
         stringsearch >=0.3.6.6 && <0.4,
-        template-haskell >=2.18.0.0 && <2.19,
-        text >=1.2.5.0 && <1.3,
-        these >=1.1.1.1 && <1.2,
-        time >=1.11.1.1 && <1.12,
-        transformers >=0.5.6.2 && <0.6,
+        template-haskell >=2.21.0.0 && <2.22,
+        text >=2.1.1 && <2.2,
+        these >=1.2.1 && <1.3,
+        time >=1.12.2 && <1.13,
+        transformers >=0.6.1.0 && <0.7,
         transformers-base >=0.4.6 && <0.5,
         utf8-string >=1.0.2 && <1.1,
-        vector >=0.12.3.1 && <0.13,
-        witherable >=0.4.2 && <0.5
+        vector >=0.13.2.0 && <0.14,
+        witherable >=0.5 && <0.6
 
 executable purs
     main-is:            Main.hs
-    build-tool-depends: happy:happy ==1.20.0
     hs-source-dirs:     app
     other-modules:
         Command.Bundle
@@ -360,85 +366,86 @@
         -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures
         -Wno-monomorphism-restriction -Wno-missing-deriving-strategies
         -Wno-missing-export-lists -Wno-missing-kind-signatures
-        -Wno-partial-fields -fno-warn-unused-do-bind -threaded -rtsopts
-        -with-rtsopts=-N -Wno-unused-packages
+        -Wno-partial-fields -Wno-missing-role-annotations
+        -fno-warn-unused-do-bind -threaded -rtsopts -with-rtsopts=-N
+        -Wno-unused-packages
 
     build-depends:
-        aeson >=2.0.3.0 && <2.1,
-        aeson-better-errors >=0.9.1.1 && <0.10,
-        ansi-terminal >=0.11.3 && <0.12,
-        array >=0.5.4.0 && <0.6,
-        base >=4.16.2.0 && <4.17,
-        blaze-html >=0.9.1.2 && <0.10,
+        aeson >=2.2.3.0 && <2.3,
+        aeson-better-errors >=0.9.1.3 && <0.10,
+        ansi-terminal >=1.1.2 && <1.2,
+        array >=0.5.8.0 && <0.6,
+        base >=4.19.2.0 && <4.20,
+        blaze-html >=0.9.2.0 && <0.10,
         bower-json >=1.1.0.0 && <1.2,
         boxes >=0.1.5 && <0.2,
-        bytestring >=0.11.3.1 && <0.12,
-        Cabal >=3.6.3.0 && <3.7,
-        cborg >=0.2.7.0 && <0.3,
-        serialise >=0.2.5.0 && <0.3,
+        bytestring >=0.12.1.0 && <0.13,
+        Cabal >=3.10.3.0 && <3.11,
+        cborg >=0.2.10.0 && <0.3,
         cheapskate >=0.1.1.2 && <0.2,
-        clock >=0.8.3 && <0.9,
-        containers >=0.6.5.1 && <0.7,
+        clock >=0.8.4 && <0.9,
+        containers >=0.6.8 && <0.7,
         cryptonite >=0.30 && <0.31,
         data-ordlist >=0.4.7.0 && <0.5,
-        deepseq >=1.4.6.1 && <1.5,
-        directory >=1.3.6.2 && <1.4,
+        deepseq >=1.5.1.0 && <1.6,
+        directory >=1.3.8.5 && <1.4,
         dlist >=1.0 && <1.1,
         edit-distance >=0.2.2.1 && <0.3,
-        file-embed >=0.0.15.0 && <0.1,
-        filepath >=1.4.2.2 && <1.5,
+        file-embed >=0.0.16.0 && <0.1,
+        filepath >=1.4.301.0 && <1.5,
         Glob >=0.10.2 && <0.11,
-        haskeline >=0.8.2 && <0.9,
+        haskeline >=0.8.2.1 && <0.9,
         language-javascript ==0.7.0.0,
-        lens >=5.1.1 && <5.2,
-        lifted-async >=0.10.2.2 && <0.11,
+        lens >=5.3.4 && <5.4,
+        lifted-async >=0.10.2.7 && <0.11,
         lifted-base >=0.2.3.12 && <0.3,
-        memory >=0.17.0 && <0.18,
+        memory >=0.18.0 && <0.19,
         monad-control >=1.0.3.1 && <1.1,
-        monad-logger >=0.3.36 && <0.4,
-        monoidal-containers >=0.6.2.0 && <0.7,
-        mtl >=2.2.2 && <2.3,
+        monad-logger >=0.3.42 && <0.4,
+        monoidal-containers >=0.6.6.0 && <0.7,
+        mtl >=2.3.1 && <2.4,
         parallel >=3.2.2.0 && <3.3,
-        parsec >=3.1.15.0 && <3.2,
-        pattern-arrows >=0.0.2 && <0.1,
-        process ==1.6.13.1,
-        protolude >=0.3.1 && <0.4,
-        regex-tdfa >=1.3.1.2 && <1.4,
-        safe >=0.3.19 && <0.4,
-        scientific >=0.3.7.0 && <0.4,
+        parsec >=3.1.17.0 && <3.2,
+        process >=1.6.25.0 && <1.7,
+        protolude >=0.3.4 && <0.4,
+        regex-tdfa >=1.3.2.3 && <1.4,
+        safe >=0.3.21 && <0.4,
+        scientific >=0.3.8.0 && <0.4,
+        semialign >=1.3.1 && <1.4,
         semigroups >=0.20 && <0.21,
-        semialign >=1.2.0.1 && <1.3,
+        serialise >=0.2.6.1 && <0.3,
         sourcemap >=0.1.7 && <0.2,
-        stm >=2.5.0.2 && <2.6,
+        stm >=2.5.3.1 && <2.6,
         stringsearch >=0.3.6.6 && <0.4,
-        template-haskell >=2.18.0.0 && <2.19,
-        text >=1.2.5.0 && <1.3,
-        these >=1.1.1.1 && <1.2,
-        time >=1.11.1.1 && <1.12,
-        transformers >=0.5.6.2 && <0.6,
+        template-haskell >=2.21.0.0 && <2.22,
+        text >=2.1.1 && <2.2,
+        these >=1.2.1 && <1.3,
+        time >=1.12.2 && <1.13,
+        transformers >=0.6.1.0 && <0.7,
         transformers-base >=0.4.6 && <0.5,
         utf8-string >=1.0.2 && <1.1,
-        vector >=0.12.3.1 && <0.13,
-        witherable >=0.4.2 && <0.5,
-        ansi-wl-pprint >=0.6.9 && <0.7,
-        exceptions >=0.10.4 && <0.11,
-        network >=3.1.2.7 && <3.2,
-        optparse-applicative >=0.17.0.0 && <0.18,
+        vector >=0.13.2.0 && <0.14,
+        witherable >=0.5 && <0.6,
+        prettyprinter >=1.7.1 && <1.8,
+        prettyprinter-ansi-terminal >=1.1.3 && <1.2,
+        exceptions >=0.10.7 && <0.11,
+        network >=3.2.7.0 && <3.3,
+        optparse-applicative >=0.18.1.0 && <0.19,
         purescript
 
     if flag(release)
         cpp-options: -DRELEASE
 
     else
-        build-depends: gitrev >=1.2.0 && <1.4
+        build-depends: gitrev >=1.3.1 && <1.4
 
+    if flag(static)
+        ld-options: -static -pthread
+
 test-suite tests
     type:               exitcode-stdio-1.0
     main-is:            Main.hs
-    build-tool-depends:
-        happy:happy ==1.20.0, hspec-discover:hspec-discover,
-        purescript:purs
-
+    build-tool-depends: hspec-discover:hspec-discover, purescript:purs
     hs-source-dirs:     tests
     other-modules:
         Language.PureScript.Ide.CompletionSpec
@@ -460,6 +467,7 @@
         TestGraph
         TestHierarchy
         TestIde
+        TestInteractive
         TestMake
         TestPrimDocs
         TestPsci
@@ -472,6 +480,7 @@
         TestUtils
         Paths_purescript
 
+    autogen-modules:    Paths_purescript
     default-language:   Haskell2010
     default-extensions:
         BangPatterns ConstraintKinds DataKinds DefaultSignatures
@@ -491,72 +500,71 @@
         -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures
         -Wno-monomorphism-restriction -Wno-missing-deriving-strategies
         -Wno-missing-export-lists -Wno-missing-kind-signatures
-        -Wno-partial-fields -Wno-incomplete-uni-patterns
-        -Wno-unused-packages
+        -Wno-partial-fields -Wno-missing-role-annotations
+        -Wno-incomplete-uni-patterns -Wno-unused-packages
 
     build-depends:
-        aeson >=2.0.3.0 && <2.1,
-        aeson-better-errors >=0.9.1.1 && <0.10,
-        ansi-terminal >=0.11.3 && <0.12,
-        array >=0.5.4.0 && <0.6,
-        base >=4.16.2.0 && <4.17,
-        blaze-html >=0.9.1.2 && <0.10,
+        aeson >=2.2.3.0 && <2.3,
+        aeson-better-errors >=0.9.1.3 && <0.10,
+        ansi-terminal >=1.1.2 && <1.2,
+        array >=0.5.8.0 && <0.6,
+        base >=4.19.2.0 && <4.20,
+        blaze-html >=0.9.2.0 && <0.10,
         bower-json >=1.1.0.0 && <1.2,
         boxes >=0.1.5 && <0.2,
-        bytestring >=0.11.3.1 && <0.12,
-        Cabal >=3.6.3.0 && <3.7,
-        cborg >=0.2.7.0 && <0.3,
-        serialise >=0.2.5.0 && <0.3,
+        bytestring >=0.12.1.0 && <0.13,
+        Cabal >=3.10.3.0 && <3.11,
+        cborg >=0.2.10.0 && <0.3,
         cheapskate >=0.1.1.2 && <0.2,
-        clock >=0.8.3 && <0.9,
-        containers >=0.6.5.1 && <0.7,
+        clock >=0.8.4 && <0.9,
+        containers >=0.6.8 && <0.7,
         cryptonite >=0.30 && <0.31,
         data-ordlist >=0.4.7.0 && <0.5,
-        deepseq >=1.4.6.1 && <1.5,
-        directory >=1.3.6.2 && <1.4,
+        deepseq >=1.5.1.0 && <1.6,
+        directory >=1.3.8.5 && <1.4,
         dlist >=1.0 && <1.1,
         edit-distance >=0.2.2.1 && <0.3,
-        file-embed >=0.0.15.0 && <0.1,
-        filepath >=1.4.2.2 && <1.5,
+        file-embed >=0.0.16.0 && <0.1,
+        filepath >=1.4.301.0 && <1.5,
         Glob >=0.10.2 && <0.11,
-        haskeline >=0.8.2 && <0.9,
+        haskeline >=0.8.2.1 && <0.9,
         language-javascript ==0.7.0.0,
-        lens >=5.1.1 && <5.2,
-        lifted-async >=0.10.2.2 && <0.11,
+        lens >=5.3.4 && <5.4,
+        lifted-async >=0.10.2.7 && <0.11,
         lifted-base >=0.2.3.12 && <0.3,
-        memory >=0.17.0 && <0.18,
+        memory >=0.18.0 && <0.19,
         monad-control >=1.0.3.1 && <1.1,
-        monad-logger >=0.3.36 && <0.4,
-        monoidal-containers >=0.6.2.0 && <0.7,
-        mtl >=2.2.2 && <2.3,
+        monad-logger >=0.3.42 && <0.4,
+        monoidal-containers >=0.6.6.0 && <0.7,
+        mtl >=2.3.1 && <2.4,
         parallel >=3.2.2.0 && <3.3,
-        parsec >=3.1.15.0 && <3.2,
-        pattern-arrows >=0.0.2 && <0.1,
-        process ==1.6.13.1,
-        protolude >=0.3.1 && <0.4,
-        regex-tdfa >=1.3.1.2 && <1.4,
-        safe >=0.3.19 && <0.4,
-        scientific >=0.3.7.0 && <0.4,
+        parsec >=3.1.17.0 && <3.2,
+        process >=1.6.25.0 && <1.7,
+        protolude >=0.3.4 && <0.4,
+        regex-tdfa >=1.3.2.3 && <1.4,
+        safe >=0.3.21 && <0.4,
+        scientific >=0.3.8.0 && <0.4,
+        semialign >=1.3.1 && <1.4,
         semigroups >=0.20 && <0.21,
-        semialign >=1.2.0.1 && <1.3,
+        serialise >=0.2.6.1 && <0.3,
         sourcemap >=0.1.7 && <0.2,
-        stm >=2.5.0.2 && <2.6,
+        stm >=2.5.3.1 && <2.6,
         stringsearch >=0.3.6.6 && <0.4,
-        template-haskell >=2.18.0.0 && <2.19,
-        text >=1.2.5.0 && <1.3,
-        these >=1.1.1.1 && <1.2,
-        time >=1.11.1.1 && <1.12,
-        transformers >=0.5.6.2 && <0.6,
+        template-haskell >=2.21.0.0 && <2.22,
+        text >=2.1.1 && <2.2,
+        these >=1.2.1 && <1.3,
+        time >=1.12.2 && <1.13,
+        transformers >=0.6.1.0 && <0.7,
         transformers-base >=0.4.6 && <0.5,
         utf8-string >=1.0.2 && <1.1,
-        vector >=0.12.3.1 && <0.13,
-        witherable >=0.4.2 && <0.5,
+        vector >=0.13.2.0 && <0.14,
+        witherable >=0.5 && <0.6,
         purescript,
         generic-random >=1.5.0.1 && <1.6,
-        hspec >=2.10.7 && <3,
+        hspec >=2.11.12 && <2.12,
         HUnit >=1.6.2.0 && <1.7,
         newtype >=0.2.2.0 && <0.3,
-        QuickCheck >=2.14.2 && <2.15,
-        regex-base >=0.94.0.2 && <0.95,
-        split >=0.2.3.4 && <0.3,
-        typed-process >=0.2.10.1 && <0.3
+        QuickCheck >=2.14.3 && <2.15,
+        regex-base >=0.94.0.3 && <0.95,
+        split >=0.2.5 && <0.3,
+        typed-process >=0.2.12.0 && <0.3
diff --git a/src/Control/Monad/Supply.hs b/src/Control/Monad/Supply.hs
--- a/src/Control/Monad/Supply.hs
+++ b/src/Control/Monad/Supply.hs
@@ -7,7 +7,8 @@
 
 import Control.Applicative (Alternative)
 import Control.Monad.Error.Class (MonadError(..))
-import Control.Monad.Reader (MonadPlus, MonadReader, MonadTrans)
+import Control.Monad.Reader (MonadReader, MonadTrans)
+import Control.Monad (MonadPlus)
 import Control.Monad.State (StateT(..))
 import Control.Monad.Writer (MonadWriter)
 
diff --git a/src/Control/Monad/Supply/Class.hs b/src/Control/Monad/Supply/Class.hs
--- a/src/Control/Monad/Supply/Class.hs
+++ b/src/Control/Monad/Supply/Class.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE TypeOperators #-}
+
 -- |
 -- A class for monads supporting a supply of fresh names
 --
diff --git a/src/Control/PatternArrows.hs b/src/Control/PatternArrows.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/PatternArrows.hs
@@ -0,0 +1,118 @@
+-----------------------------------------------------------------------------
+--
+-- Module      :  Control.PatternArrows
+-- Copyright   :  (c) Phil Freeman 2013
+-- License     :  MIT
+--
+-- Maintainer  :  Phil Freeman <paf31@cantab.net>
+-- Stability   :  experimental
+-- Portability :
+--
+-- |
+-- Arrows for Pretty Printing
+--
+-----------------------------------------------------------------------------
+
+{-# LANGUAGE GeneralizedNewtypeDeriving, GADTs #-}
+
+module Control.PatternArrows where
+
+import Prelude
+
+import Control.Arrow ((***), (<+>))
+import Control.Arrow qualified as A
+import Control.Category ((>>>))
+import Control.Category qualified as C
+import Control.Monad.State
+import Control.Monad.Fix (fix)
+
+-- |
+-- A first-order pattern match
+--
+-- A pattern is a Kleisli arrow for the @StateT Maybe@ monad. That is, patterns can fail, and can carry user-defined state.
+--
+newtype Pattern u a b = Pattern { runPattern :: A.Kleisli (StateT u Maybe) a b } deriving (A.Arrow, A.ArrowZero, A.ArrowPlus)
+
+instance C.Category (Pattern u) where
+    id = Pattern C.id
+    Pattern p1 . Pattern p2 = Pattern (p1 C.. p2)
+
+instance Functor (Pattern u a) where
+  fmap f (Pattern p) = Pattern $ A.Kleisli $ fmap f . A.runKleisli p
+
+-- |
+-- Run a pattern with an input and initial user state
+--
+-- Returns Nothing if the pattern fails to match
+--
+pattern_ :: Pattern u a b -> u -> a -> Maybe b
+pattern_ p u = flip evalStateT u . A.runKleisli (runPattern p)
+
+-- |
+-- Construct a pattern from a function
+--
+mkPattern :: (a -> Maybe b) -> Pattern u a b
+mkPattern f = Pattern $ A.Kleisli (lift . f)
+
+-- |
+-- Construct a pattern from a stateful function
+--
+mkPattern' :: (a -> StateT u Maybe b) -> Pattern u a b
+mkPattern' = Pattern . A.Kleisli
+
+-- |
+-- Construct a pattern which recursively matches on the left-hand-side
+--
+chainl :: Pattern u a (a, a) -> (r -> r -> r) -> Pattern u a r -> Pattern u a r
+chainl g f p = fix $ \c -> g >>> ((c <+> p) *** p) >>> A.arr (uncurry f)
+
+-- |
+-- Construct a pattern which recursively matches on the right-hand side
+--
+chainr :: Pattern u a (a, a) -> (r -> r -> r) -> Pattern u a r -> Pattern u a r
+chainr g f p = fix $ \c -> g >>> (p *** (c <+> p)) >>> A.arr (uncurry f)
+
+-- |
+-- Construct a pattern which recursively matches on one-side of a tuple
+--
+wrap :: Pattern u a (s, a) -> (s -> r -> r) -> Pattern u a r -> Pattern u a r
+wrap g f p = fix $ \c -> g >>> (C.id *** (c <+> p)) >>> A.arr (uncurry f)
+
+-- |
+-- Construct a pattern which matches a part of a tuple
+--
+split :: Pattern u a (s, t) -> (s -> t -> r) -> Pattern u a r
+split s f = s >>> A.arr (uncurry f)
+
+-- |
+-- A table of operators
+--
+data OperatorTable u a r = OperatorTable { runOperatorTable :: [ [Operator u a r] ] }
+
+-- |
+-- An operator:
+--
+--  [@AssocL@] A left-associative operator
+--
+--  [@AssocR@] A right-associative operator
+--
+--  [@Wrap@] A prefix-like or postfix-like operator
+--
+--  [@Split@] A prefix-like or postfix-like operator which does not recurse into its operand
+--
+data Operator u a r where
+  AssocL :: Pattern u a (a, a) -> (r -> r -> r) -> Operator u a r
+  AssocR :: Pattern u a (a, a) -> (r -> r -> r) -> Operator u a r
+  Wrap   :: Pattern u a (s, a) -> (s -> r -> r) -> Operator u a r
+  Split  :: Pattern u a (s, t) -> (s -> t -> r) -> Operator u a r
+
+-- |
+-- Build a pretty printer from an operator table and an indecomposable pattern
+--
+buildPrettyPrinter :: OperatorTable u a r -> Pattern u a r -> Pattern u a r
+buildPrettyPrinter table p = foldl (\p' ops -> foldl1 (<+>) (flip map ops $ \case
+    AssocL pat g -> chainl pat g p'
+    AssocR pat g -> chainr pat g p'
+    Wrap pat g -> wrap pat g p'
+    Split pat g -> split pat g
+  ) <+> p') p $ runOperatorTable table
diff --git a/src/Language/PureScript/CST/Convert.hs b/src/Language/PureScript/CST/Convert.hs
--- a/src/Language/PureScript/CST/Convert.hs
+++ b/src/Language/PureScript/CST/Convert.hs
@@ -16,6 +16,7 @@
   ) where
 
 import Prelude hiding (take)
+import Protolude (headDef)
 
 import Data.Bifunctor (bimap, first)
 import Data.Char (toLower)
@@ -446,7 +447,7 @@
 convertDeclaration fileName decl = case decl of
   DeclData _ (DataHead _ a vars) bd -> do
     let
-      ctrs :: SourceToken -> DataCtor a -> [(SourceToken, DataCtor a)] -> [AST.DataConstructorDeclaration]
+      ctrs :: SourceToken -> DataCtor b -> [(SourceToken, DataCtor b)] -> [AST.DataConstructorDeclaration]
       ctrs st (DataCtor _ name fields) tl
         = AST.DataConstructorDeclaration (sourceAnnCommented fileName st (nameTok name)) (nameValue name) (zip ctrFields $ convertType fileName <$> fields)
         : (case tl of
@@ -460,7 +461,7 @@
       (goTypeVar <$> vars)
       (convertType fileName bd)
   DeclNewtype _ (DataHead _ a vars) st x ys -> do
-    let ctrs = [AST.DataConstructorDeclaration (sourceAnnCommented fileName st (snd $ declRange decl)) (nameValue x) [(head ctrFields, convertType fileName ys)]]
+    let ctrs = [AST.DataConstructorDeclaration (sourceAnnCommented fileName st (snd $ declRange decl)) (nameValue x) [(headDef (internalError "No constructor name") ctrFields, convertType fileName ys)]]
     pure $ AST.DataDeclaration ann Env.Newtype (nameValue a) (goTypeVar <$> vars) ctrs
   DeclClass _ (ClassHead _ sup name vars fdeps) bd -> do
     let
diff --git a/src/Language/PureScript/CST/Monad.hs b/src/Language/PureScript/CST/Monad.hs
--- a/src/Language/PureScript/CST/Monad.hs
+++ b/src/Language/PureScript/CST/Monad.hs
@@ -102,9 +102,11 @@
     , errType = ty
     }
   where
-  range = case toks of
-    [] -> SourceRange (SourcePos 0 0) (SourcePos 0 0)
-    _  -> widen (tokRange . tokAnn $ head toks) (tokRange . tokAnn $ last toks)
+  range = case NE.nonEmpty toks of
+    Nothing -> SourceRange (SourcePos 0 0) (SourcePos 0 0)
+    Just neToks -> widen
+     (tokRange . tokAnn $ NE.head neToks)
+     (tokRange . tokAnn $ NE.last neToks)
 
 addFailure :: [SourceToken] -> ParserErrorType -> Parser ()
 addFailure toks ty = Parser $ \st _ ksucc ->
diff --git a/src/Language/PureScript/CST/Utils.hs b/src/Language/PureScript/CST/Utils.hs
--- a/src/Language/PureScript/CST/Utils.hs
+++ b/src/Language/PureScript/CST/Utils.hs
@@ -1,6 +1,7 @@
 module Language.PureScript.CST.Utils where
 
 import Prelude
+import Protolude (headDef)
 
 import Control.Monad (unless)
 import Data.Coerce (coerce)
@@ -86,16 +87,20 @@
 unexpectedLabel tok = Label tok "<unexpected>"
 
 unexpectedExpr :: Monoid a => [SourceToken] -> Expr a
-unexpectedExpr toks = ExprIdent mempty (unexpectedQual (head toks))
+unexpectedExpr toks =
+  ExprIdent mempty (unexpectedQual (headDef placeholder toks))
 
 unexpectedBinder :: Monoid a => [SourceToken] -> Binder a
-unexpectedBinder toks = BinderVar mempty (unexpectedName (head toks))
+unexpectedBinder toks =
+  BinderVar mempty (unexpectedName (headDef placeholder toks))
 
 unexpectedRecordUpdate :: Monoid a => [SourceToken] -> RecordUpdate a
-unexpectedRecordUpdate toks = RecordUpdateLeaf (unexpectedLabel (head toks)) (head toks) (unexpectedExpr toks)
+unexpectedRecordUpdate toks =
+  RecordUpdateLeaf (unexpectedLabel (headDef placeholder toks)) (headDef placeholder toks) (unexpectedExpr toks)
 
 unexpectedRecordLabeled :: [SourceToken] -> RecordLabeled a
-unexpectedRecordLabeled toks = RecordPun (unexpectedName (head toks))
+unexpectedRecordLabeled toks =
+  RecordPun (unexpectedName (headDef placeholder toks))
 
 rangeToks :: TokenRange -> [SourceToken]
 rangeToks (a, b) = [a, b]
diff --git a/src/Language/PureScript/CodeGen/JS.hs b/src/Language/PureScript/CodeGen/JS.hs
--- a/src/Language/PureScript/CodeGen/JS.hs
+++ b/src/Language/PureScript/CodeGen/JS.hs
@@ -7,9 +7,8 @@
   ) where
 
 import Prelude
-import Protolude (ordNub)
+import Protolude (ordNub, headDef)
 
-import Control.Applicative (liftA2)
 import Control.Monad (forM, replicateM, void)
 import Control.Monad.Except (MonadError, throwError)
 import Control.Monad.Reader (MonadReader, asks)
@@ -311,7 +310,8 @@
     let (f, args) = unApp e []
     args' <- mapM valueToJs args
     case f of
-      Var (_, _, Just IsNewtype) _ -> return (head args')
+      Var (_, _, Just IsNewtype) _ ->
+        return (headDef (internalError "Newtype constructor without constructor name") args')
       Var (_, _, Just (IsConstructor _ fields)) name | length args == length fields ->
         return $ AST.Unary Nothing AST.New $ AST.App Nothing (qualifiedToJS id name) args'
       _ -> flip (foldl (\fn a -> AST.App Nothing fn [a])) args' <$> valueToJs f
diff --git a/src/Language/PureScript/CoreImp/Optimizer/TCO.hs b/src/Language/PureScript/CoreImp/Optimizer/TCO.hs
--- a/src/Language/PureScript/CoreImp/Optimizer/TCO.hs
+++ b/src/Language/PureScript/CoreImp/Optimizer/TCO.hs
@@ -3,10 +3,10 @@
 
 import Prelude
 
-import Control.Applicative (empty, liftA2)
+import Control.Applicative (empty)
 import Control.Monad (guard)
-import Control.Monad.State (State, evalState, get, modify)
-import Data.Functor (($>), (<&>))
+import Control.Monad.State (State, evalState, gets, modify)
+import Data.Functor (($>))
 import Data.Set qualified as S
 import Data.Text (Text, pack)
 import Language.PureScript.CoreImp.AST (AST(..), InitializerEffects(..), UnaryOperator(..), everything, everywhereTopDownM)
@@ -23,7 +23,7 @@
   copyVar arg = "$copy_" <> arg
 
   tcoDoneM :: State Int Text
-  tcoDoneM = get <&> \count -> "$tco_done" <>
+  tcoDoneM = gets $ \count -> "$tco_done" <>
     if count == 0 then "" else pack . show $ count
 
   tcoLoop :: Text
diff --git a/src/Language/PureScript/Docs/AsHtml.hs b/src/Language/PureScript/Docs/AsHtml.hs
--- a/src/Language/PureScript/Docs/AsHtml.hs
+++ b/src/Language/PureScript/Docs/AsHtml.hs
@@ -67,7 +67,7 @@
 
 packageAsHtml
     :: (InPackage P.ModuleName -> Maybe HtmlRenderContext)
-    -> Package a
+    -> Package x
     -> HtmlOutput Html
 packageAsHtml getHtmlCtx Package{..} =
   HtmlOutput indexFile modules
@@ -133,8 +133,7 @@
     h3 ! A.class_ "decl__title clearfix" $ do
       a ! A.class_ "decl__anchor" ! A.href (v declFragment) $ "#"
       H.span $ text declTitle
-      text " " -- prevent browser from treating
-               -- declTitle + linkToSource as one word
+      text "\x200b" -- Zero-width space to allow double-click selection of title
       for_ declSourceSpan (linkToSource r)
 
     H.div ! A.class_ "decl__body" $ do
@@ -242,7 +241,7 @@
 
   isOp = isRight . runParser CST.parseOperator
 
-  runParser :: CST.Parser a -> Text -> Either String a
+  runParser :: CST.Parser x -> Text -> Either String x
   runParser p' =
     bimap (CST.prettyPrintError . NE.head) snd
       . CST.runTokenParser p'
diff --git a/src/Language/PureScript/Docs/RenderedCode/RenderType.hs b/src/Language/PureScript/Docs/RenderedCode/RenderType.hs
--- a/src/Language/PureScript/Docs/RenderedCode/RenderType.hs
+++ b/src/Language/PureScript/Docs/RenderedCode/RenderType.hs
@@ -233,7 +233,7 @@
 renderType' :: PrettyPrintType -> RenderedCode
 renderType'
   = fromMaybe (internalError "Incomplete pattern")
-  . PA.pattern matchType ()
+  . PA.pattern_ matchType ()
 
 renderTypeVars :: [(TypeVarVisibility, Text, Maybe PrettyPrintType)] -> RenderedCode
 renderTypeVars tyVars = mintersperse sp (map renderTypeVar tyVars)
@@ -252,4 +252,4 @@
 renderTypeAtom' :: PrettyPrintType -> RenderedCode
 renderTypeAtom'
   = fromMaybe (internalError "Incomplete pattern")
-  . PA.pattern matchTypeAtom ()
+  . PA.pattern_ matchTypeAtom ()
diff --git a/src/Language/PureScript/Docs/Types.hs b/src/Language/PureScript/Docs/Types.hs
--- a/src/Language/PureScript/Docs/Types.hs
+++ b/src/Language/PureScript/Docs/Types.hs
@@ -875,7 +875,7 @@
       Local y      -> withPackage (Nothing :: Maybe ()) y
       FromDep pn y -> withPackage (Just pn) y
     where
-    withPackage :: (A.ToJSON p, A.ToJSON x) => p -> x -> A.Value
+    withPackage :: (A.ToJSON p, A.ToJSON y) => p -> y -> A.Value
     withPackage p y =
       A.object [ "package" .= p
                , "item"    .= y
diff --git a/src/Language/PureScript/Errors.hs b/src/Language/PureScript/Errors.hs
--- a/src/Language/PureScript/Errors.hs
+++ b/src/Language/PureScript/Errors.hs
@@ -13,7 +13,8 @@
 import Control.Monad (forM, unless)
 import Control.Monad.Error.Class (MonadError(..))
 import Control.Monad.Trans.State.Lazy (State, evalState, get, put)
-import Control.Monad.Writer (Last(..), MonadWriter(..), censor)
+import Control.Monad.Writer (MonadWriter(..), censor)
+import Data.Monoid (Last(..))
 import Data.Bifunctor (first, second)
 import Data.Bitraversable (bitraverse)
 import Data.Char (isSpace)
diff --git a/src/Language/PureScript/Ide/Reexports.hs b/src/Language/PureScript/Ide/Reexports.hs
--- a/src/Language/PureScript/Ide/Reexports.hs
+++ b/src/Language/PureScript/Ide/Reexports.hs
@@ -35,9 +35,8 @@
   = ReexportResult
   { reResolved :: a
   , reFailed   :: [(P.ModuleName, P.DeclarationRef)]
-  } deriving (Show, Eq, Functor, Generic)
+  } deriving (Show, Eq, Functor)
 
-instance NFData a => NFData (ReexportResult a)
 
 -- | Uses the passed formatter to format the resolved module, and adds possible
 -- failures
diff --git a/src/Language/PureScript/Ide/State.hs b/src/Language/PureScript/Ide/State.hs
--- a/src/Language/PureScript/Ide/State.hs
+++ b/src/Language/PureScript/Ide/State.hs
@@ -54,7 +54,7 @@
 import Language.PureScript.Ide.Reexports (ReexportResult(..), prettyPrintReexportResult, reexportHasFailures, resolveReexports)
 import Language.PureScript.Ide.SourceFile (extractAstInformation)
 import Language.PureScript.Ide.Types
-import Language.PureScript.Ide.Util (discardAnn, displayTimeSpec, logPerf, opNameT, properNameT, runLogger)
+import Language.PureScript.Ide.Util (discardAnn, opNameT, properNameT, runLogger)
 import System.Directory (getModificationTime)
 
 -- | Resets all State inside psc-ide
@@ -199,10 +199,7 @@
 populateVolatileStateSync :: (Ide m, MonadLogger m) => m ()
 populateVolatileStateSync = do
   st <- ideStateVar <$> ask
-  let message duration = "Finished populating volatile state in: " <> displayTimeSpec duration
-  results <- logPerf message $ do
-    !r <- liftIO (atomically (populateVolatileStateSTM st))
-    pure r
+  results <- liftIO (atomically (populateVolatileStateSTM st))
   void $ Map.traverseWithKey
     (\mn -> logWarnN . prettyPrintReexportResult (const (P.runModuleName mn)))
     (Map.filter reexportHasFailures results)
@@ -235,7 +232,7 @@
         & resolveOperators
         & resolveReexports reexportRefs
   setVolatileStateSTM ref (IdeVolatileState (AstData asts) (map reResolved results) rebuildCache)
-  pure (force results)
+  pure results
 
 resolveLocations
   :: ModuleMap (DefinitionSites P.SourceSpan, TypeAnnotations)
diff --git a/src/Language/PureScript/Ide/Types.hs b/src/Language/PureScript/Ide/Types.hs
--- a/src/Language/PureScript/Ide/Types.hs
+++ b/src/Language/PureScript/Ide/Types.hs
@@ -31,43 +31,43 @@
   | IdeDeclValueOperator IdeValueOperator
   | IdeDeclTypeOperator IdeTypeOperator
   | IdeDeclModule P.ModuleName
-  deriving (Show, Eq, Ord, Generic, NFData)
+  deriving (Show, Eq, Ord)
 
 data IdeValue = IdeValue
   { _ideValueIdent :: P.Ident
   , _ideValueType :: P.SourceType
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 data IdeType = IdeType
  { _ideTypeName :: P.ProperName 'P.TypeName
  , _ideTypeKind :: P.SourceType
  , _ideTypeDtors :: [(P.ProperName 'P.ConstructorName, P.SourceType)]
- } deriving (Show, Eq, Ord, Generic, NFData)
+ } deriving (Show, Eq, Ord)
 
 data IdeTypeSynonym = IdeTypeSynonym
   { _ideSynonymName :: P.ProperName 'P.TypeName
   , _ideSynonymType :: P.SourceType
   , _ideSynonymKind :: P.SourceType
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 data IdeDataConstructor = IdeDataConstructor
   { _ideDtorName :: P.ProperName 'P.ConstructorName
   , _ideDtorTypeName :: P.ProperName 'P.TypeName
   , _ideDtorType :: P.SourceType
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 data IdeTypeClass = IdeTypeClass
   { _ideTCName :: P.ProperName 'P.ClassName
   , _ideTCKind :: P.SourceType
   , _ideTCInstances :: [IdeInstance]
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 data IdeInstance = IdeInstance
   { _ideInstanceModule :: P.ModuleName
   , _ideInstanceName :: P.Ident
   , _ideInstanceTypes :: [P.SourceType]
   , _ideInstanceConstraints :: Maybe [P.SourceConstraint]
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 data IdeValueOperator = IdeValueOperator
   { _ideValueOpName :: P.OpName 'P.ValueOpName
@@ -75,7 +75,7 @@
   , _ideValueOpPrecedence :: P.Precedence
   , _ideValueOpAssociativity :: P.Associativity
   , _ideValueOpType :: Maybe P.SourceType
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 data IdeTypeOperator = IdeTypeOperator
   { _ideTypeOpName :: P.OpName 'P.TypeOpName
@@ -83,7 +83,7 @@
   , _ideTypeOpPrecedence :: P.Precedence
   , _ideTypeOpAssociativity :: P.Associativity
   , _ideTypeOpKind :: Maybe P.SourceType
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 _IdeDeclValue :: Traversal' IdeDeclaration IdeValue
 _IdeDeclValue f (IdeDeclValue x) = map IdeDeclValue (f x)
@@ -131,7 +131,7 @@
 data IdeDeclarationAnn = IdeDeclarationAnn
   { _idaAnnotation :: Annotation
   , _idaDeclaration :: IdeDeclaration
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 data Annotation
   = Annotation
@@ -139,7 +139,7 @@
   , _annExportedFrom :: Maybe P.ModuleName
   , _annTypeAnnotation :: Maybe P.SourceType
   , _annDocumentation :: Maybe Text
-  } deriving (Show, Eq, Ord, Generic, NFData)
+  } deriving (Show, Eq, Ord)
 
 makeLenses ''Annotation
 makeLenses ''IdeDeclarationAnn
@@ -152,7 +152,7 @@
 newtype AstData a = AstData (ModuleMap (DefinitionSites a, TypeAnnotations))
   -- ^ SourceSpans for the definition sites of values and types as well as type
   -- annotations found in a module
-  deriving (Show, Eq, Ord, Generic, NFData, Functor, Foldable)
+  deriving (Show, Eq, Ord, Functor, Foldable)
 
 data IdeLogLevel = LogDebug | LogPerf | LogAll | LogDefault | LogNone
   deriving (Show, Eq)
@@ -313,7 +313,7 @@
 
 -- | Denotes the different namespaces a name in PureScript can reside in.
 data IdeNamespace = IdeNSValue | IdeNSType | IdeNSModule
-  deriving (Show, Eq, Ord, Generic, NFData)
+  deriving (Show, Eq, Ord)
 
 instance FromJSON IdeNamespace where
   parseJSON = Aeson.withText "Namespace" $ \case
@@ -324,4 +324,4 @@
 
 -- | A name tagged with a namespace
 data IdeNamespaced = IdeNamespaced IdeNamespace Text
-  deriving (Show, Eq, Ord, Generic, NFData)
+  deriving (Show, Eq, Ord)
diff --git a/src/Language/PureScript/Interactive/Directive.hs b/src/Language/PureScript/Interactive/Directive.hs
--- a/src/Language/PureScript/Interactive/Directive.hs
+++ b/src/Language/PureScript/Interactive/Directive.hs
@@ -8,6 +8,8 @@
 import Data.Maybe (fromJust)
 import Data.List (isPrefixOf)
 import Data.Tuple (swap)
+import Data.List.NonEmpty (NonEmpty(..))
+import Data.List.NonEmpty qualified as NEL
 
 import Language.PureScript.Interactive.Types (Directive(..))
 
@@ -15,40 +17,40 @@
 -- A mapping of directives to the different strings that can be used to invoke
 -- them.
 --
-directiveStrings :: [(Directive, [String])]
+directiveStrings :: [(Directive, NonEmpty String)]
 directiveStrings =
-    [ (Help      , ["?", "help"])
-    , (Quit      , ["quit"])
-    , (Reload    , ["reload"])
-    , (Clear     , ["clear"])
-    , (Browse    , ["browse"])
-    , (Type      , ["type"])
-    , (Kind      , ["kind"])
-    , (Show      , ["show"])
-    , (Paste     , ["paste"])
-    , (Complete  , ["complete"])
-    , (Print     , ["print"])
+    [ (Help      , NEL.fromList ["?", "help"])
+    , (Quit      , NEL.singleton "quit")
+    , (Reload    , NEL.singleton "reload")
+    , (Clear     , NEL.singleton "clear")
+    , (Browse    , NEL.singleton "browse")
+    , (Type      , NEL.singleton "type")
+    , (Kind      , NEL.singleton "kind")
+    , (Show      , NEL.singleton "show")
+    , (Paste     , NEL.singleton "paste")
+    , (Complete  , NEL.singleton "complete")
+    , (Print     , NEL.singleton "print")
     ]
 
 -- |
--- Like directiveStrings, but the other way around.
+-- Like `directiveStrings`, but the other way around.
 --
 directiveStrings' :: [(String, Directive)]
 directiveStrings' = concatMap go directiveStrings
   where
-  go (dir, strs) = map (, dir) strs
+  go (dir, strs) = map (, dir) $ NEL.toList strs
 
 -- |
 -- Returns all possible string representations of a directive.
 --
-stringsFor :: Directive -> [String]
+stringsFor :: Directive -> NonEmpty String
 stringsFor d = fromJust (lookup d directiveStrings)
 
 -- |
 -- Returns the default string representation of a directive.
 --
 stringFor :: Directive -> String
-stringFor = head . stringsFor
+stringFor = NEL.head . stringsFor
 
 -- |
 -- Returns the list of directives which could be expanded from the string
@@ -84,4 +86,3 @@
   , (Complete, "<prefix>",  "Show completions for <prefix> as if pressing tab")
   , (Print,    "<fn>",      "Set the repl's printing function to <fn> (which must be fully qualified)")
   ]
-
diff --git a/src/Language/PureScript/Linter/Exhaustive.hs b/src/Language/PureScript/Linter/Exhaustive.hs
--- a/src/Language/PureScript/Linter/Exhaustive.hs
+++ b/src/Language/PureScript/Linter/Exhaustive.hs
@@ -11,7 +11,6 @@
 import Prelude
 import Protolude (ordNub)
 
-import Control.Applicative (Applicative(..))
 import Control.Arrow (first, second)
 import Control.Monad (unless)
 import Control.Monad.Writer.Class (MonadWriter(..))
diff --git a/src/Language/PureScript/Linter/Imports.hs b/src/Language/PureScript/Linter/Imports.hs
--- a/src/Language/PureScript/Linter/Imports.hs
+++ b/src/Language/PureScript/Linter/Imports.hs
@@ -5,7 +5,7 @@
   ) where
 
 import Prelude
-import Protolude (ordNub)
+import Protolude (ordNub, tailDef, headDef)
 
 import Control.Monad (join, unless, foldM, (<=<))
 import Control.Monad.Writer.Class (MonadWriter(..))
@@ -91,7 +91,7 @@
     let unwarned = imps \\ warned
         duplicates
           = join
-          . map tail
+          . map (tailDef $ internalError "lintImports: duplicates")
           . filter ((> 1) . length)
           . groupBy ((==) `on` defQual)
           . sortOn defQual
@@ -195,7 +195,7 @@
             Just (Qualified _ name) -> Just (k, Qualified mnq (toName name))
             _ -> Nothing
       | isQualifiedWith k q =
-          case importName (head is) of
+          case importName (headDef (internalError "extractByQual: empty import list") is) of
             Qualified (ByModuleName mn') name -> Just (mn', Qualified mnq (toName name))
             _ -> internalError "unqualified name in extractByQual"
     go _ = Nothing
diff --git a/src/Language/PureScript/Pretty/Types.hs b/src/Language/PureScript/Pretty/Types.hs
--- a/src/Language/PureScript/Pretty/Types.hs
+++ b/src/Language/PureScript/Pretty/Types.hs
@@ -238,7 +238,7 @@
 typeAtomAsBox' :: PrettyPrintType -> Box
 typeAtomAsBox'
   = fromMaybe (internalError "Incomplete pattern")
-  . PA.pattern (matchTypeAtom defaultOptions) ()
+  . PA.pattern_ (matchTypeAtom defaultOptions) ()
 
 typeAtomAsBox :: Int -> Type a -> Box
 typeAtomAsBox maxDepth = typeAtomAsBox' . convertPrettyPrintType maxDepth
@@ -280,7 +280,7 @@
 typeAsBoxImpl :: TypeRenderOptions -> PrettyPrintType -> Box
 typeAsBoxImpl tro
   = fromMaybe (internalError "Incomplete pattern")
-  . PA.pattern (matchType tro) ()
+  . PA.pattern_ (matchType tro) ()
 
 -- | Generate a pretty-printed string representing a 'Type'
 prettyPrintType :: Int -> Type a -> String
diff --git a/src/Language/PureScript/Renamer.hs b/src/Language/PureScript/Renamer.hs
--- a/src/Language/PureScript/Renamer.hs
+++ b/src/Language/PureScript/Renamer.hs
@@ -5,7 +5,8 @@
 
 import Prelude
 
-import Control.Monad.State (MonadState(..), State, gets, modify, runState, (>=>))
+import Control.Monad.State (MonadState(..), State, gets, modify, runState)
+import Control.Monad ((>=>))
 
 import Data.Functor ((<&>))
 import Data.List (find)
diff --git a/src/Language/PureScript/Sugar/BindingGroups.hs b/src/Language/PureScript/Sugar/BindingGroups.hs
--- a/src/Language/PureScript/Sugar/BindingGroups.hs
+++ b/src/Language/PureScript/Sugar/BindingGroups.hs
@@ -114,8 +114,8 @@
 
       valueDeclarationInfo = M.fromList $ swap <$> valueDeclarationKeys
       findDeclarationInfo i = (M.findWithDefault False i valueDeclarationInfo, i)
-      computeValueDependencies = (`intersect` valueDeclarationKeys) . fmap findDeclarationInfo . usedIdents moduleName 
-  
+      computeValueDependencies = (`intersect` valueDeclarationKeys) . fmap findDeclarationInfo . usedIdents moduleName
+
       makeValueDeclarationVert = (,,) <$> id <*> makeValueDeclarationKey <*> computeValueDependencies
       valueDeclarationVerts = makeValueDeclarationVert <$> values
 
@@ -267,7 +267,7 @@
   -> m Declaration
 toDataBindingGroup (AcyclicSCC (d, _, _)) = return d
 toDataBindingGroup (CyclicSCC ds')
-  | Just kds@((ss, _):|_) <- nonEmpty $ concatMap (kindDecl . getDecl) ds' = throwError . errorMessage' ss . CycleInKindDeclaration $ fmap snd kds
+  | Just kds@((ss, _) :| _) <- nonEmpty $ concatMap (kindDecl . getDecl) ds' = throwError . errorMessage' ss . CycleInKindDeclaration $ fmap snd kds
   | not (null typeSynonymCycles) =
       throwError
         . MultipleErrors
diff --git a/src/Language/PureScript/Sugar/Names/Env.hs b/src/Language/PureScript/Sugar/Names/Env.hs
--- a/src/Language/PureScript/Sugar/Names/Env.hs
+++ b/src/Language/PureScript/Sugar/Names/Env.hs
@@ -20,7 +20,7 @@
 
 import Prelude
 
-import Control.Monad (forM_, when)
+import Control.Monad (forM_, when, (>=>))
 import Control.Monad.Error.Class (MonadError(..))
 import Control.Monad.Writer.Class (MonadWriter(..))
 
@@ -28,7 +28,7 @@
 import Data.Foldable (find)
 import Data.List (groupBy, sortOn, delete)
 import Data.Maybe (mapMaybe)
-import Safe (headMay)
+import Safe (headMay, headDef)
 import Data.Map qualified as M
 import Data.Set qualified as S
 
@@ -482,8 +482,9 @@
     byOrig = sortOn importSourceModule xs
     groups = groupBy ((==) `on` importSourceModule) byOrig
     nonImplicit = filter ((/= FromImplicit) . importProvenance) xs
-    name = toName . disqualify . importName $ head xs
-    conflictModules = mapMaybe (getQual . importName . head) groups
+    name = toName . disqualify . importName $
+      headDef (internalError "checkImportConflicts: No imports found") xs
+    conflictModules = mapMaybe (headMay >=> (getQual . importName)) groups
   in
     if length groups > 1
     then case nonImplicit of
@@ -494,8 +495,8 @@
         return (mnNew, mnOrig)
       _ -> throwError . errorMessage' ss $ ScopeConflict name conflictModules
     else
-      case head byOrig of
-        ImportRecord (Qualified (ByModuleName mnNew) _) mnOrig _ _ ->
+      case headMay byOrig of
+        Just (ImportRecord (Qualified (ByModuleName mnNew) _) mnOrig _ _) ->
           return (mnNew, mnOrig)
         _ ->
           internalError "checkImportConflicts: ImportRecord should be qualified"
diff --git a/src/Language/PureScript/Sugar/Names/Exports.hs b/src/Language/PureScript/Sugar/Names/Exports.hs
--- a/src/Language/PureScript/Sugar/Names/Exports.hs
+++ b/src/Language/PureScript/Sugar/Names/Exports.hs
@@ -4,6 +4,7 @@
   ) where
 
 import Prelude
+import Protolude (headDef)
 
 import Control.Monad (filterM, foldM, liftM2, unless, void, when)
 import Control.Monad.Writer.Class (MonadWriter(..))
@@ -127,7 +128,8 @@
     -> (a -> Name)
     -> M.Map (Qualified a) [ImportRecord a]
     -> m [Qualified a]
-  extract ss' useQual name toName = fmap (map (importName . head . snd)) . go . M.toList
+  extract ss' useQual name toName =
+    fmap (map (importName . headDef (internalError "Missing value in extract") . snd)) . go . M.toList
     where
     go = filterM $ \(name', options) -> do
       let isMatch = if useQual then isQualifiedWith name name' else any (checkUnqual name') options
diff --git a/src/Language/PureScript/Sugar/Names/Imports.hs b/src/Language/PureScript/Sugar/Names/Imports.hs
--- a/src/Language/PureScript/Sugar/Names/Imports.hs
+++ b/src/Language/PureScript/Sugar/Names/Imports.hs
@@ -7,7 +7,7 @@
 
 import Prelude
 
-import Control.Monad (foldM, when)
+import Control.Monad (foldM, when, unless)
 import Control.Monad.Error.Class (MonadError(..))
 
 import Data.Foldable (for_, traverse_)
@@ -147,7 +147,7 @@
     -> ProperName 'ConstructorName
     -> m ()
   checkDctorExists ss tcon exports dctor
-    = when (dctor `notElem` exports)
+    = unless (dctor `elem` exports)
     . throwError . errorMessage' ss
     $ UnknownImportDataConstructor importModule tcon dctor
 
diff --git a/src/Language/PureScript/Sugar/Operators.hs b/src/Language/PureScript/Sugar/Operators.hs
--- a/src/Language/PureScript/Sugar/Operators.hs
+++ b/src/Language/PureScript/Sugar/Operators.hs
@@ -409,6 +409,9 @@
   goExpr pos (TypedValue check v ty) = do
     ty' <- goType' pos ty
     return (pos, TypedValue check v ty')
+  goExpr pos (VisibleTypeApp v ty) = do
+    ty' <- goType' pos ty
+    return (pos, VisibleTypeApp v ty')
   goExpr pos other = return (pos, other)
 
   goBinder :: SourceSpan -> Binder -> m (SourceSpan, Binder)
diff --git a/src/Language/PureScript/Sugar/Operators/Common.hs b/src/Language/PureScript/Sugar/Operators/Common.hs
--- a/src/Language/PureScript/Sugar/Operators/Common.hs
+++ b/src/Language/PureScript/Sugar/Operators/Common.hs
@@ -2,7 +2,7 @@
 
 import Prelude
 
-import Control.Monad.State (guard, join)
+import Control.Monad (guard, join)
 import Control.Monad.Except (MonadError(..))
 
 import Data.Either (rights)
diff --git a/src/Language/PureScript/Sugar/TypeClasses.hs b/src/Language/PureScript/Sugar/TypeClasses.hs
--- a/src/Language/PureScript/Sugar/TypeClasses.hs
+++ b/src/Language/PureScript/Sugar/TypeClasses.hs
@@ -237,7 +237,8 @@
 
   expRef :: Ident -> Qualified (ProperName 'ClassName) -> [SourceType] -> Maybe DeclarationRef
   expRef name className tys
-    | isExportedClass className && all isExportedType (getConstructors `concatMap` tys) = Just $ TypeInstanceRef genSpan name UserNamed
+    | isExportedClass className && all (all isExportedType . getConstructors) tys =
+        Just $ TypeInstanceRef genSpan name UserNamed
     | otherwise = Nothing
 
   isExportedClass :: Qualified (ProperName 'ClassName) -> Bool
diff --git a/src/Language/PureScript/TypeChecker.hs b/src/Language/PureScript/TypeChecker.hs
--- a/src/Language/PureScript/TypeChecker.hs
+++ b/src/Language/PureScript/TypeChecker.hs
@@ -8,7 +8,7 @@
   ) where
 
 import Prelude
-import Protolude (headMay, maybeToLeft, ordNub)
+import Protolude (headMay, maybeToLeft, ordNub, headDef)
 
 import Control.Lens ((^..), _2)
 import Control.Monad (when, unless, void, forM, zipWithM_)
@@ -422,7 +422,9 @@
 
   checkInstanceMembers :: [Declaration] -> m [Declaration]
   checkInstanceMembers instDecls = do
-    let idents = sort . map head . group . map memberName $ instDecls
+    let idents = sort
+          . map (headDef $ internalError "checkInstanceMembers: Empty instance declaration list")
+          . group . map memberName $ instDecls
     for_ (firstDuplicate idents) $ \ident ->
       throwError . errorMessage $ DuplicateValueDeclaration ident
     return instDecls
@@ -747,7 +749,9 @@
 
   checkClassMembersAreExported :: DeclarationRef -> m ()
   checkClassMembersAreExported dr@(TypeClassRef ss' name) = do
-    let members = ValueRef ss' `map` head (mapMaybe findClassMembers decls)
+    let members = ValueRef ss' `map`
+          (headDef $ internalError "checkClassMembersAreExported: Empty class member list")
+          (mapMaybe findClassMembers decls)
     let missingMembers = members \\ exps
     unless (null missingMembers) . throwError . errorMessage' ss' $ TransitiveExportError dr missingMembers
     where
diff --git a/src/Language/PureScript/TypeChecker/Deriving.hs b/src/Language/PureScript/TypeChecker/Deriving.hs
--- a/src/Language/PureScript/TypeChecker/Deriving.hs
+++ b/src/Language/PureScript/TypeChecker/Deriving.hs
@@ -1,6 +1,7 @@
 {- HLINT ignore "Unused LANGUAGE pragma" -} -- HLint doesn't recognize that TypeApplications is used in a pattern
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeAbstractions #-}
 module Language.PureScript.TypeChecker.Deriving (deriveInstance) where
 
 import Protolude hiding (Type)
@@ -529,7 +530,7 @@
 
   hasInstance :: InstanceContext -> Qualified (Either Text (ProperName 'TypeName)) -> Qualified (ProperName 'ClassName) -> Bool
   hasInstance tcds ht@(Qualified qb _) cn@(Qualified cqb _) =
-    any tcdAppliesToType $ concatMap (findDicts tcds cn) (ordNub [ByNullSourcePos, cqb, qb])
+    any (any tcdAppliesToType . findDicts tcds cn) (ordNub [ByNullSourcePos, cqb, qb])
     where
     tcdAppliesToType tcd = case tcdInstanceTypes tcd of
       [headOfType -> ht'] -> ht == ht'
diff --git a/src/Language/PureScript/TypeChecker/Entailment.hs b/src/Language/PureScript/TypeChecker/Entailment.hs
--- a/src/Language/PureScript/TypeChecker/Entailment.hs
+++ b/src/Language/PureScript/TypeChecker/Entailment.hs
@@ -11,13 +11,15 @@
   ) where
 
 import Prelude
-import Protolude (ordNub, headMay)
+import Protolude (ordNub, headMay, headDef)
 
 import Control.Arrow (second, (&&&))
 import Control.Monad.Error.Class (MonadError(..))
-import Control.Monad.State (MonadState(..), MonadTrans(..), StateT(..), evalStateT, execStateT, foldM, gets, guard, join, modify, zipWithM, zipWithM_, (<=<))
+import Control.Monad.State (MonadState(..), MonadTrans(..), StateT(..), evalStateT, execStateT, gets, modify)
+import Control.Monad (foldM, guard, join, zipWithM, zipWithM_, (<=<))
 import Control.Monad.Supply.Class (MonadSupply(..))
-import Control.Monad.Writer (Any(..), MonadWriter(..), WriterT(..))
+import Control.Monad.Writer (MonadWriter(..), WriterT(..))
+import Data.Monoid (Any(..))
 
 import Data.Either (lefts, partitionEithers)
 import Data.Foldable (for_, fold, toList)
@@ -255,7 +257,7 @@
               , typeClassDependencies
               , typeClassIsEmpty
               , typeClassCoveringSets
-              , typeClassMembers 
+              , typeClassMembers
               } <- case M.lookup className' classesInScope of
                 Nothing -> throwError . errorMessage $ UnknownClass className'
                 Just tcd -> pure tcd
@@ -279,8 +281,8 @@
                                     else Left (Left (tcdToInstanceDescription tcd)) -- can't continue with this chain yet, need proof of apartness
 
                   lefts [found]
-            solution <- lift . lift 
-              $ unique kinds'' tys'' ambiguous instances 
+            solution <- lift . lift
+              $ unique kinds'' tys'' ambiguous instances
               $ unknownsInAllCoveringSets (fst . (typeClassArguments !!)) typeClassMembers tys'' typeClassCoveringSets
             case solution of
               Solved substs tcd -> do
@@ -291,7 +293,7 @@
                 -- Now enforce any functional dependencies, using unification
                 -- Note: we need to generate fresh types for any unconstrained
                 -- type variables before unifying.
-                let subst = fmap head substs
+                let subst = fmap (headDef $ internalError "entails: empty substitution") substs
                 currentSubst <- lift . lift $ gets checkSubstitution
                 subst' <- lift . lift $ withFreshTypes tcd (fmap (substituteType currentSubst) subst)
                 lift . lift $ zipWithM_ (\t1 t2 -> do
@@ -429,9 +431,9 @@
             unknownsInAllCoveringSets :: (Int -> Text) -> [(Ident, SourceType, Maybe (S.Set (NEL.NonEmpty Int)))] -> [SourceType] -> S.Set (S.Set Int) -> UnknownsHint
             unknownsInAllCoveringSets indexToArgText tyClassMembers tyArgs coveringSets = do
               let unkIndices = findIndices containsUnknowns tyArgs
-              if all (\s -> any (`S.member` s) unkIndices) coveringSets then 
+              if all (\s -> any (`S.member` s) unkIndices) coveringSets then
                 fromMaybe Unknowns unknownsRequiringVtas
-              else 
+              else
                 NoUnknowns
               where
                 unknownsRequiringVtas = do
@@ -450,15 +452,15 @@
                         (_, getVars, _, _, _) = everythingOnValues (++) ignore getVarIdents ignore ignore ignore
                         ignore = const []
                         getVarIdents = \case
-                          Var _ ident | Just vtas <- M.lookup ident tyClassMemberVta -> 
+                          Var _ ident | Just vtas <- M.lookup ident tyClassMemberVta ->
                             [(ident, vtas)]
-                          _ -> 
+                          _ ->
                             []
 
                     getECTExpr = \case
                       ErrorCheckingType expr _ -> Just expr
                       _ -> Nothing
-                      
+
                   tyClassMembers' <- headMay $ mapMaybe (fmap tyClassMembersInExpr . getECTExpr) hints
                   membersWithVtas <- NEL.nonEmpty tyClassMembers'
                   pure $ UnknownsWithVtaRequiringArgs membersWithVtas
@@ -666,7 +668,7 @@
                  , l, r
                  , rowFromList (fixed, rowVar)
                  , Just [ srcConstraint C.RowUnion kinds [rest, r, rowVar] Nothing ]
-                 , [("r", kindRow (head kinds))]
+                 , [("r", kindRow (headDef (internalError "unionRows: empty kinds") kinds))]
                  )
 
     solveRowCons :: [SourceType] -> [SourceType] -> Maybe [TypeClassDict]
diff --git a/src/Language/PureScript/TypeChecker/Kinds.hs b/src/Language/PureScript/TypeChecker/Kinds.hs
--- a/src/Language/PureScript/TypeChecker/Kinds.hs
+++ b/src/Language/PureScript/TypeChecker/Kinds.hs
@@ -26,6 +26,7 @@
   ) where
 
 import Prelude
+import Protolude (headDef)
 
 import Control.Arrow ((***))
 import Control.Lens ((^.), _1, _2, _3)
@@ -633,7 +634,7 @@
   -> DataDeclarationArgs
   -> m DataDeclarationResult
 kindOfData moduleName dataDecl =
-  head . (^. _2) <$> kindsOfAll moduleName [] [dataDecl] []
+  headDef (internalError "kindOfData: empty list") . (^. _2) <$> kindsOfAll moduleName [] [dataDecl] []
 
 inferDataDeclaration
   :: forall m. (MonadError MultipleErrors m, MonadState CheckState m)
@@ -685,7 +686,7 @@
   -> TypeDeclarationArgs
   -> m TypeDeclarationResult
 kindOfTypeSynonym moduleName typeDecl =
-  head . (^. _1) <$> kindsOfAll moduleName [typeDecl] [] []
+  headDef (internalError "kindOfTypeSynonym: empty list") . (^. _1) <$> kindsOfAll moduleName [typeDecl] [] []
 
 inferTypeSynonym
   :: forall m. (MonadError MultipleErrors m, MonadState CheckState m)
@@ -802,7 +803,7 @@
   -> ClassDeclarationArgs
   -> m ClassDeclarationResult
 kindOfClass moduleName clsDecl =
-  head . (^. _3) <$> kindsOfAll moduleName [] [] [clsDecl]
+  headDef (internalError "kindOfClass: empty list") . (^. _3) <$> kindsOfAll moduleName [] [] [clsDecl]
 
 inferClassDeclaration
   :: forall m. (MonadError MultipleErrors m, MonadState CheckState m)
diff --git a/src/Language/PureScript/TypeChecker/Monad.hs b/src/Language/PureScript/TypeChecker/Monad.hs
--- a/src/Language/PureScript/TypeChecker/Monad.hs
+++ b/src/Language/PureScript/TypeChecker/Monad.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeOperators #-}
 
 -- |
 -- Monads for type checking and type inference and associated data types
@@ -9,7 +10,8 @@
 
 import Control.Arrow (second)
 import Control.Monad.Error.Class (MonadError(..))
-import Control.Monad.State (MonadState(..), StateT(..), forM_, gets, guard, join, modify, when, (<=<))
+import Control.Monad.State (MonadState(..), StateT(..), gets, modify)
+import Control.Monad (forM_, guard, join, when, (<=<))
 import Control.Monad.Writer.Class (MonadWriter(..), censor)
 
 import Data.Maybe (fromMaybe)
diff --git a/src/Language/PureScript/TypeChecker/Synonyms.hs b/src/Language/PureScript/TypeChecker/Synonyms.hs
--- a/src/Language/PureScript/TypeChecker/Synonyms.hs
+++ b/src/Language/PureScript/TypeChecker/Synonyms.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeOperators #-}
 
 -- |
 -- Functions for replacing fully applied type synonyms
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,32 +1,25 @@
 # Please update Haskell image versions under .github/workflows/ci.yml together to use the same GHC version
 # (or the CI build will fail)
-resolver: lts-20.9
+resolver: lts-23.18
 pvp-bounds: both
 packages:
 - '.'
 ghc-options:
   # Build with advanced optimizations enabled by default
-  "$locals": -O2 -Werror
+  "$locals": -O2 -Werror -fspecialize-aggressively -fexpose-all-unfoldings
 extra-deps:
 # As of 2021-11-08, the latest release of `language-javascript` is 0.7.1.0,
 # but it has a problem with parsing the `async` keyword.  It doesn't allow
 # `async` to be used as an object key:
 # https://github.com/erikd/language-javascript/issues/131
 - language-javascript-0.7.0.0
-# Fix issue with libtinfo.
-# See https://github.com/purescript/purescript/issues/4253
-- process-1.6.13.1
-# The Cabal library is not in Stackage
-- Cabal-3.6.3.0
-# hspec versions 2.9.3 to 2.10.6 depend on ghc
-# ghc depends on terminfo by default, but that can be ignored
-# if one uses the '-terminfo' flag.
-# Unfortunately, hspec doesn't expose a similar flag.
-#
-# Using hspec >= 2.10.7 addresses this.
-- hspec-2.10.9
-- hspec-core-2.10.9
-- hspec-discover-2.10.9
+- bower-json-1.1.0.0
+- these-1.2.1
+- aeson-better-errors-0.9.1.3
+
+- github: purescript/cheapskate
+  commit: 633c69024e061ad956f1aecfc137fb99a7a7a20b
+
 nix:
   packages:
   - zlib
@@ -37,8 +30,3 @@
 flags:
   aeson-pretty:
     lib-only: true
-  these:
-    assoc: false
-  haskeline:
-    # Avoids a libtinfo dynamic library dependency
-    terminfo: false
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -12,6 +12,7 @@
 import TestCst qualified
 import TestDocs qualified
 import TestHierarchy qualified
+import TestInteractive qualified
 import TestPrimDocs qualified
 import TestPsci qualified
 import TestIde qualified
@@ -40,6 +41,7 @@
       describe "sourcemaps" TestSourceMaps.spec
     describe "make" TestMake.spec
     describe "psci" TestPsci.spec
+    describe "interactive" TestInteractive.spec
     describe "corefn" TestCoreFn.spec
     describe "docs" TestDocs.spec
     describe "prim-docs" TestPrimDocs.spec
diff --git a/tests/TestDocs.hs b/tests/TestDocs.hs
--- a/tests/TestDocs.hs
+++ b/tests/TestDocs.hs
@@ -1,6 +1,7 @@
 module TestDocs where
 
 import Prelude
+import Protolude (tailDef)
 
 import Data.Bifunctor (first)
 import Data.List (findIndex)
@@ -952,7 +953,7 @@
     codeToString (Docs.renderType ty) == expected
 
   shouldBeOrdered mn declNames =
-    zipWith (ShouldComeBefore mn) declNames (tail declNames)
+    zipWith (ShouldComeBefore mn) declNames (tailDef mempty declNames)
 
 testTagsCases :: [(Text, [TagsAssertion])]
 testTagsCases =
diff --git a/tests/TestInteractive.hs b/tests/TestInteractive.hs
new file mode 100644
--- /dev/null
+++ b/tests/TestInteractive.hs
@@ -0,0 +1,97 @@
+module TestInteractive where
+
+import Prelude
+
+import Test.Hspec (Spec, describe, it, shouldBe, shouldSatisfy)
+import Data.List.NonEmpty qualified as NEL
+import Data.List (nub)
+
+import Language.PureScript.Interactive.Directive
+  ( directiveStrings
+  , directiveStrings'
+  , stringsFor
+  , stringFor
+  , directivesFor
+  , directivesFor'
+  , help
+  )
+import Language.PureScript.Interactive.Types (Directive(..))
+
+spec :: Spec
+spec = do
+  describe "Interactive.Directive" $ do
+    directiveStringsTests
+    directiveStrings'Tests
+    stringsForTests
+    stringForTests
+    directivesFor'Tests
+    directivesForTests
+    helpTests
+
+directiveStringsTests :: Spec
+directiveStringsTests = describe "directiveStrings" $ do
+  it "should have non-empty string lists for each directive" $ do
+    let allHaveElements = not (any (null . NEL.toList . snd) directiveStrings)
+    allHaveElements `shouldBe` True
+
+directiveStrings'Tests :: Spec
+directiveStrings'Tests = describe "directiveStrings'" $ do
+  it "should be a flattened version of directiveStrings" $ do
+    let expectedLength = sum (length . NEL.toList . snd <$> directiveStrings)
+    length directiveStrings' `shouldBe` expectedLength
+
+  it "should contain appropriate directives" $ do
+    lookup "help" directiveStrings' `shouldBe` Just Help
+    lookup "?" directiveStrings' `shouldBe` Just Help
+    lookup "quit" directiveStrings' `shouldBe` Just Quit
+    lookup "reload" directiveStrings' `shouldBe` Just Reload
+
+stringsForTests :: Spec
+stringsForTests = describe "stringsFor" $ do
+  it "should return all strings for a directive" $ do
+    NEL.toList (stringsFor Help) `shouldBe` ["?", "help"]
+    NEL.toList (stringsFor Quit) `shouldBe` ["quit"]
+    NEL.toList (stringsFor Reload) `shouldBe` ["reload"]
+
+stringForTests :: Spec
+stringForTests = describe "stringFor" $ do
+  it "should return the first string for a directive" $ do
+    stringFor Help `shouldBe` "?"
+    stringFor Quit `shouldBe` "quit"
+    stringFor Reload `shouldBe` "reload"
+
+directivesFor'Tests :: Spec
+directivesFor'Tests = describe "directivesFor'" $ do
+  it "should return matching directives and their string representations" $ do
+    directivesFor' "h" `shouldBe` [(Help, "help")]
+    directivesFor' "he" `shouldBe` [(Help, "help")]
+    directivesFor' "?" `shouldBe` [(Help, "?")]
+    directivesFor' "q" `shouldBe` [(Quit, "quit")]
+
+  it "should handle ambiguous prefixes" $ do
+    directivesFor' "" `shouldSatisfy` (not . null)
+    length (directivesFor' "") `shouldBe` length directiveStrings'
+
+  it "should return empty list for non-matching prefixes" $ do
+    directivesFor' "xyz" `shouldBe` []
+
+directivesForTests :: Spec
+directivesForTests = describe "directivesFor" $ do
+  it "should return just the directive part" $ do
+    directivesFor "h" `shouldBe` [Help]
+    directivesFor "q" `shouldBe` [Quit]
+    directivesFor "xyz" `shouldBe` []
+
+helpTests :: Spec
+helpTests = describe "help" $ do
+  it "should contain help for all directives" $ do
+    let helpDirectives = map (\(d, _, _) -> d) help
+    length (nub helpDirectives) `shouldBe` length directiveStrings
+
+  it "should contain descriptive help text" $ do
+    let helpTexts = map (\(_, _, text) -> text) help
+    not (any null helpTexts) `shouldBe` True
+
+  it "should include parameters where needed" $ do
+    lookup Browse (map (\(d, a, _) -> (d, a)) help) `shouldBe` Just "<module>"
+    lookup Type (map (\(d, a, _) -> (d, a)) help) `shouldBe` Just "<expr>"
diff --git a/tests/purs/docs/output/Ado/docs.json b/tests/purs/docs/output/Ado/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Ado/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[9,16],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Ado.purs","start":[4,1]},"title":"test"}],"name":"Ado","reExports":[]}
diff --git a/tests/purs/docs/output/ChildDeclOrder/docs.json b/tests/purs/docs/output/ChildDeclOrder/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ChildDeclOrder/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[8,10],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[8,3]},"title":"First"},{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[9,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[9,3]},"title":"Second"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["ChildDeclOrder"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["ChildDeclOrder"],"Two"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,15],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[18,1]},"title":"showTwo"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["ChildDeclOrder"],"Foo"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["ChildDeclOrder"],"Two"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,16],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[21,1]},"title":"fooTwo"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[9,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[7,1]},"title":"Two"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[12,22],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[12,3]},"title":"show"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["ChildDeclOrder"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["ChildDeclOrder"],"Two"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,15],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[18,1]},"title":"showTwo"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[12,22],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[11,1]},"title":"Show"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[15,12],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[15,3]},"title":"foo1"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[16,12],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[16,3]},"title":"foo2"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["ChildDeclOrder"],"Foo"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["ChildDeclOrder"],"Two"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,16],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[21,1]},"title":"fooTwo"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["ChildDeclOrder"],"Foo"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[25,1]},"title":"fooInt"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[16,12],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ChildDeclOrder.purs","start":[14,1]},"title":"Foo"}],"name":"ChildDeclOrder","reExports":[]}
diff --git a/tests/purs/docs/output/Clash/docs.json b/tests/purs/docs/output/Clash/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Clash/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Clash","reExports":[]}
diff --git a/tests/purs/docs/output/Clash1/docs.json b/tests/purs/docs/output/Clash1/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Clash1/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Clash1","reExports":[]}
diff --git a/tests/purs/docs/output/Clash1a/docs.json b/tests/purs/docs/output/Clash1a/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Clash1a/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,13],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash1a.purs","start":[3,1]},"title":"value"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[6,17],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash1a.purs","start":[6,1]},"title":"Type'"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[9,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash1a.purs","start":[9,3]},"title":"typeClassMember"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[9,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash1a.purs","start":[8,1]},"title":"TypeClass"}],"name":"Clash1a","reExports":[]}
diff --git a/tests/purs/docs/output/Clash2/docs.json b/tests/purs/docs/output/Clash2/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Clash2/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Clash2","reExports":[]}
diff --git a/tests/purs/docs/output/Clash2a/docs.json b/tests/purs/docs/output/Clash2a/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Clash2a/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,16],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash2a.purs","start":[3,1]},"title":"value"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[6,20],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash2a.purs","start":[6,1]},"title":"Type'"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[9,28],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash2a.purs","start":[9,3]},"title":"typeClassMember"}],"comments":null,"info":{"arguments":[["a",null],["b",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[9,28],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Clash2a.purs","start":[8,1]},"title":"TypeClass"}],"name":"Clash2a","reExports":[]}
diff --git a/tests/purs/docs/output/ConstrainedArgument/docs.json b/tests/purs/docs/output/ConstrainedArgument/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ConstrainedArgument/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"arguments":[["t",{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[3,22],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ConstrainedArgument.purs","start":[3,1]},"title":"Foo"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[],"constraintClass":[["Prim"],"Partial"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[5,54],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ConstrainedArgument.purs","start":[5,1]},"title":"WithoutArgs"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[6,52],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ConstrainedArgument.purs","start":[6,1]},"title":"WithArgs"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[],"constraintClass":[["Prim"],"Partial"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[],"constraintClass":[["Prim"],"Partial"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[7,65],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ConstrainedArgument.purs","start":[7,1]},"title":"MultiWithoutArgs"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[8,63],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ConstrainedArgument.purs","start":[8,1]},"title":"MultiWithArgs"}],"name":"ConstrainedArgument","reExports":[]}
diff --git a/tests/purs/docs/output/Data.Newtype/docs.json b/tests/purs/docs/output/Data.Newtype/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Data.Newtype/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"arguments":[["t",null],["a",null]],"declType":"typeClass","fundeps":[[["t"],["a"]]],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[6,44],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","start":[6,1]},"title":"Newtype"}],"name":"Data.Newtype","reExports":[]}
diff --git a/tests/purs/docs/output/DeclOrder/docs.json b/tests/purs/docs/output/DeclOrder/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/DeclOrder/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[16,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrder.purs","start":[16,1]},"title":"A"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[10,7],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrder.purs","start":[10,1]},"title":"x1"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[13,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrder.purs","start":[13,1]},"title":"X2"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[11,7],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrder.purs","start":[11,1]},"title":"x3"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[14,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrder.purs","start":[14,1]},"title":"X4"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[17,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrder.purs","start":[17,1]},"title":"B"}],"name":"DeclOrder","reExports":[]}
diff --git a/tests/purs/docs/output/DeclOrderNoExportList/docs.json b/tests/purs/docs/output/DeclOrderNoExportList/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/DeclOrderNoExportList/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,7],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","start":[3,1]},"title":"x1"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[4,7],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","start":[4,1]},"title":"x3"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[6,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","start":[6,1]},"title":"X2"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[7,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","start":[7,1]},"title":"X4"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[9,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","start":[9,1]},"title":"A"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[10,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","start":[10,1]},"title":"B"}],"name":"DeclOrderNoExportList","reExports":[]}
diff --git a/tests/purs/docs/output/Desugar/docs.json b/tests/purs/docs/output/Desugar/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Desugar/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[3,15],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Desugar.purs","start":[3,12]},"title":"X"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[3,19],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Desugar.purs","start":[3,1]},"title":"X"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Desugar"],"X"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[5,38],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Desugar.purs","start":[5,1]},"title":"test"}],"name":"Desugar","reExports":[]}
diff --git a/tests/purs/docs/output/DocComments/docs.json b/tests/purs/docs/output/DocComments/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/DocComments/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"This declaration has a code block:\n\n    example == 0\n\nHere we are really testing that the leading whitespace is not stripped, as\nthis ensures that we don't accidentally change code blocks into normal\nparagraphs.\n","info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[10,15],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocComments.purs","start":[10,1]},"title":"example"}],"name":"DocComments","reExports":[]}
diff --git a/tests/purs/docs/output/DocCommentsClassMethod/docs.json b/tests/purs/docs/output/DocCommentsClassMethod/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/DocCommentsClassMethod/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":"class method comment\n","info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[5,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","start":[5,3]},"title":"bar"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[6,21],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","start":[6,3]},"title":"baz"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[6,21],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","start":[3,1]},"title":"Foo"}],"name":"DocCommentsClassMethod","reExports":[]}
diff --git a/tests/purs/docs/output/DocCommentsDataConstructor/docs.json b/tests/purs/docs/output/DocCommentsDataConstructor/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/DocCommentsDataConstructor/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":"data constructor comment\n","info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[5,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[5,3]},"title":"Bar"},{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[6,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[6,3]},"title":"Baz"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[6,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[3,1]},"title":"Foo"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[9,15],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[9,3]},"title":"ComplexBar"},{"comments":"another data constructor comment\n","info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[11,15],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[11,3]},"title":"ComplexBaz"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[11,19],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[8,1]},"title":"ComplexFoo"},{"children":[{"comments":"newtype data constructor comment\n","info":{"arguments":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":["newtypeBar",{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},{"annotation":[],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"declType":"dataConstructor"},"sourceSpan":{"end":[15,40],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[15,3]},"title":"NewtypeFoo"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[15,40],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","start":[13,1]},"title":"NewtypeFoo"}],"name":"DocCommentsDataConstructor","reExports":[]}
diff --git a/tests/purs/docs/output/DocCommentsMerge/docs.json b/tests/purs/docs/output/DocCommentsMerge/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/DocCommentsMerge/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[4,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[4,15]},"title":"DataOnly"}],"comments":"decl\n","info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[4,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[4,1]},"title":"DataOnly"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[8,33],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[8,19]},"title":"KindOnlyData"}],"comments":"kind\n","info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[8,33],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[8,1]},"title":"KindOnlyData"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[13,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[13,18]},"title":"KindAndData"}],"comments":"kind\n\ndecl\n","info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[13,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[13,1]},"title":"KindAndData"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[15,37],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[15,23]},"title":"DataRoleOnly"}],"comments":"role\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[15,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[15,1]},"title":"DataRoleOnly"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[20,35],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[20,22]},"title":"DataAndRole"}],"comments":"decl\n\nrole\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[20,39],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[20,1]},"title":"DataAndRole"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[26,51],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[26,29]},"title":"KindOnlyDataRoleOnly"}],"comments":"kind\n\nrole\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[26,51],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[26,1]},"title":"KindOnlyDataRoleOnly"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[33,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[33,24]},"title":"KindDataAndRole"}],"comments":"kind\n\ndecl\n\nrole\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[33,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[33,1]},"title":"KindDataAndRole"},{"children":[],"comments":"decl\n","info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[40,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[40,1]},"title":"FFIOnly"},{"children":[],"comments":"role\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["t0",null]]},"kind":null,"sourceSpan":{"end":[42,48],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[42,1]},"title":"FFIRoleOnly"},{"children":[],"comments":"decl\n\nrole\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["t0",null]]},"kind":null,"sourceSpan":{"end":[47,47],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[47,1]},"title":"FFIAndRole"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[54,38],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[54,21]},"title":"NewtypeOnly"}],"comments":"decl\n","info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[54,38],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[54,1]},"title":"NewtypeOnly"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[58,46],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[58,25]},"title":"KindOnlyNewtype"}],"comments":"kind\n","info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[58,46],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[58,1]},"title":"KindOnlyNewtype"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[63,48],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[63,28]},"title":"KindAndNewtype"}],"comments":"kind\n\ndecl\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Phantom","Phantom"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[63,48],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[63,1]},"title":"KindAndNewtype"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[65,50],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[65,29]},"title":"NewtypeRoleOnly"}],"comments":"role\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":{"identifier":"k1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k2","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k2","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[65,50],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[65,1]},"title":"NewtypeRoleOnly"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[70,48],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[70,28]},"title":"NewtypeAndRole"}],"comments":"decl\n\nrole\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":{"identifier":"k1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k2","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k2","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[70,48],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[70,1]},"title":"NewtypeAndRole"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[76,66],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[76,37]},"title":"KindOnlyNewtypeRoleOnly"}],"comments":"kind\n\nrole\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[76,66],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[76,1]},"title":"KindOnlyNewtypeRoleOnly"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[83,56],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[83,32]},"title":"KindNewtypeAndRole"}],"comments":"kind\n\ndecl\n\nrole\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[83,56],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[83,1]},"title":"KindNewtypeAndRole"},{"children":[],"comments":"decl\n","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[90,20],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[90,1]},"title":"TypeOnly"},{"children":[],"comments":"kind\n","info":{"arguments":[["a",null],["b",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[94,28],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[94,1]},"title":"KindOnlyType"},{"children":[],"comments":"kind\n\ndecl\n","info":{"arguments":[["a",null],["b",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[99,27],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[99,1]},"title":"KindAndType"},{"children":[],"comments":"decl\n","info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[106,16],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[106,1]},"title":"ClassOnly"},{"children":[],"comments":"kind\n","info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[110,20],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[110,1]},"title":"KindOnlyClass"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[116,33],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[116,3]},"title":"fooKindAndClass"}],"comments":"kind\n\ndecl\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[116,33],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DocCommentsMerge.purs","start":[115,1]},"title":"KindAndClass"}],"name":"DocCommentsMerge","reExports":[]}
diff --git a/tests/purs/docs/output/DuplicateNames/docs.json b/tests/purs/docs/output/DuplicateNames/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/DuplicateNames/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[8,12],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/DuplicateNames.purs","start":[8,1]},"title":"unit"}],"name":"DuplicateNames","reExports":[]}
diff --git a/tests/purs/docs/output/Example/docs.json b/tests/purs/docs/output/Example/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Example/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Example","reExports":[]}
diff --git a/tests/purs/docs/output/Example2/docs.json b/tests/purs/docs/output/Example2/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Example2/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Example2.purs","start":[3,1]},"title":"one"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[6,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Example2.purs","start":[6,1]},"title":"two"}],"name":"Example2","reExports":[]}
diff --git a/tests/purs/docs/output/ExplicitExport/docs.json b/tests/purs/docs/output/ExplicitExport/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ExplicitExport/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ExplicitExport.purs","start":[3,1]},"title":"one"}],"name":"ExplicitExport","reExports":[]}
diff --git a/tests/purs/docs/output/ExplicitTypeSignatures/docs.json b/tests/purs/docs/output/ExplicitTypeSignatures/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ExplicitTypeSignatures/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"something","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"something","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"something","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[6,53],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","start":[6,1]},"title":"explicit"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[12,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","start":[12,1]},"title":"anInt"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[16,14],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","start":[16,1]},"title":"aNumber"}],"name":"ExplicitTypeSignatures","reExports":[]}
diff --git a/tests/purs/docs/output/ImportedTwice/docs.json b/tests/purs/docs/output/ImportedTwice/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ImportedTwice/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"ImportedTwice","reExports":[]}
diff --git a/tests/purs/docs/output/ImportedTwiceA/docs.json b/tests/purs/docs/output/ImportedTwiceA/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ImportedTwiceA/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"ImportedTwiceA","reExports":[]}
diff --git a/tests/purs/docs/output/ImportedTwiceB/docs.json b/tests/purs/docs/output/ImportedTwiceB/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ImportedTwiceB/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/ImportedTwiceB.purs","start":[3,1]},"title":"foo"}],"name":"ImportedTwiceB","reExports":[]}
diff --git a/tests/purs/docs/output/KindSignatureDocs/docs.json b/tests/purs/docs/output/KindSignatureDocs/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/KindSignatureDocs/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[4,35],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[4,21]},"title":"DKindAndType"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[4,35],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[4,1]},"title":"DKindAndType"},{"children":[],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":{"keyword":"type","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[7,26],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[7,1]},"title":"TKindAndType"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[10,42],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[10,24]},"title":"NKindAndType"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[10,42],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[10,1]},"title":"NKindAndType"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[14,34],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[14,3]},"title":"fooKindAndType"}],"comments":null,"info":{"arguments":[["a",null],["k",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[14,34],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[13,1]},"title":"CKindAndType"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[19,29],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[19,18]},"title":"DKindOnly"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[19,29],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[19,1]},"title":"DKindOnly"},{"children":[],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":{"keyword":"type","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[22,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[22,1]},"title":"TKindOnly"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[25,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[25,21]},"title":"NKindOnly"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[25,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[25,1]},"title":"NKindOnly"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[29,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[29,3]},"title":"fooKindOnly"}],"comments":null,"info":{"arguments":[["a",null],["k",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[29,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[28,1]},"title":"CKindOnly"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[34,29],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[34,18]},"title":"DTypeOnly"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[34,29],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[34,1]},"title":"DTypeOnly"},{"children":[],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":{"keyword":"type","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[37,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[37,1]},"title":"TTypeOnly"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[40,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[40,21]},"title":"NTypeOnly"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[40,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[40,1]},"title":"NTypeOnly"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[44,3]},"title":"fooTypeOnly"}],"comments":null,"info":{"arguments":[["a",null],["k",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[44,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[43,1]},"title":"CTypeOnly"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[48,29],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[48,18]},"title":"DImplicit"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[48,29],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[48,1]},"title":"DImplicit"},{"children":[],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":{"keyword":"type","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[50,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[50,1]},"title":"TImplicit"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[52,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[52,21]},"title":"NImplicit"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[52,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[52,1]},"title":"NImplicit"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[55,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[55,3]},"title":"fooImplicit"}],"comments":null,"info":{"arguments":[["a",null],["k",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k1","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[55,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[54,1]},"title":"CImplicit"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[59,29],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[59,20]},"title":"DHidden"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational"],"typeArguments":[["a",null],["b",null],["c",null]]},"kind":null,"sourceSpan":{"end":[59,35],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[59,1]},"title":"DHidden"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[61,14],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[61,1]},"title":"DNothing"},{"children":[],"comments":null,"info":{"arguments":[["a",null],["b",null],["c",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["KindSignatureDocs"],"DHidden"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[63,35],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[63,1]},"title":"THidden"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["KindSignatureDocs"],"DHidden"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"declType":"dataConstructor"},"sourceSpan":{"end":[65,48],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[65,23]},"title":"NHidden"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":["Representational","Representational","Representational"],"typeArguments":[["a",null],["b",null],["c",null]]},"kind":null,"sourceSpan":{"end":[65,48],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[65,1]},"title":"NHidden"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[68,37],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[68,3]},"title":"fooHidden"}],"comments":null,"info":{"arguments":[["a",null],["b",null],["c",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[68,37],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[67,1]},"title":"CHidden"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[70,15],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[70,1]},"title":"CNothing"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Nominal","Nominal"],"typeArguments":[["t0",null],["t1",null]]},"kind":null,"sourceSpan":{"end":[74,55],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[74,1]},"title":"FFI_Hidden"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Nominal"],"typeArguments":[["t0",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[75,56],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[75,1]},"title":"FFI_Shown"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Nominal"],"typeArguments":[["t0",null]]},"kind":null,"sourceSpan":{"end":[79,63],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[79,1]},"title":"FFI_RedundantParenthesis"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[82,59],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[82,33]},"title":"DataRedundantParenthesis"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[82,59],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[82,1]},"title":"DataRedundantParenthesis"},{"children":[],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[85,34],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[85,1]},"title":"ClassRedundantParenthesis"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[88,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[88,25]},"title":"DataHeadParens"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom","Phantom"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[88,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[88,1]},"title":"DataHeadParens"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[91,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[91,25]},"title":"DataTailParens"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom","Phantom"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[91,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[91,1]},"title":"DataTailParens"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[94,43],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[94,26]},"title":"DataWholeParens"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom","Phantom"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[94,43],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[94,1]},"title":"DataWholeParens"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[97,37],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[97,21]},"title":"DataSelfParens"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[97,37],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[97,1]},"title":"DataSelfParens"},{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[100,22],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[100,1]},"title":"ClassSelfParens"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[102,57],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[102,37]},"title":"DataKindAnnotation"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]]},"kind":null,"sourceSpan":{"end":[102,59],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[102,1]},"title":"DataKindAnnotation"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[104,79],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[104,49]},"title":"DataKindAnnotationWithParens"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",{"annotation":[],"contents":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"tag":"ParensInType"}]]},"kind":null,"sourceSpan":{"end":[104,81],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[104,1]},"title":"DataKindAnnotationWithParens"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[107,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[107,24]},"title":"FunctionParens1"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[107,43],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[107,1]},"title":"FunctionParens1"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[110,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[110,24]},"title":"FunctionParens2"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[110,43],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[110,1]},"title":"FunctionParens2"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[113,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[113,24]},"title":"FunctionParens3"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[113,43],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[113,1]},"title":"FunctionParens3"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[116,27],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[116,19]},"title":"DShown"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational"],"typeArguments":[["a",null],["b",null],["f",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[116,39],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[116,1]},"title":"DShown"},{"children":[],"comments":null,"info":{"arguments":[["f",null],["b",null],["c",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["KindSignatureDocs"],"DShown"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"}},"kind":{"keyword":"type","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[118,33],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[118,1]},"title":"TShown"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["KindSignatureDocs"],"DShown"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"declType":"dataConstructor"},"sourceSpan":{"end":[120,45],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[120,22]},"title":"NShown"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":["Representational","Representational","Representational"],"typeArguments":[["a",null],["f",null],["c",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[120,45],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[120,1]},"title":"NShown"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[123,40],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[123,3]},"title":"fooShown"}],"comments":null,"info":{"arguments":[["f",null],["a",null],["b",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[123,40],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/KindSignatureDocs.purs","start":[122,1]},"title":"CShown"}],"name":"KindSignatureDocs","reExports":[]}
diff --git a/tests/purs/docs/output/MultiVirtual/docs.json b/tests/purs/docs/output/MultiVirtual/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/MultiVirtual/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"MultiVirtual","reExports":[]}
diff --git a/tests/purs/docs/output/MultiVirtual1/docs.json b/tests/purs/docs/output/MultiVirtual1/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/MultiVirtual1/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/MultiVirtual1.purs","start":[3,1]},"title":"foo"}],"name":"MultiVirtual1","reExports":[]}
diff --git a/tests/purs/docs/output/MultiVirtual2/docs.json b/tests/purs/docs/output/MultiVirtual2/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/MultiVirtual2/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[8,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/MultiVirtual2.purs","start":[8,1]},"title":"bar"}],"name":"MultiVirtual2","reExports":[]}
diff --git a/tests/purs/docs/output/MultiVirtual3/docs.json b/tests/purs/docs/output/MultiVirtual3/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/MultiVirtual3/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,11],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/MultiVirtual3.purs","start":[3,1]},"title":"baz"}],"name":"MultiVirtual3","reExports":[]}
diff --git a/tests/purs/docs/output/NewOperators/docs.json b/tests/purs/docs/output/NewOperators/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/NewOperators/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"NewOperators","reExports":[]}
diff --git a/tests/purs/docs/output/NewOperators2/docs.json b/tests/purs/docs/output/NewOperators2/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/NewOperators2/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"alias":[["NewOperators2"],{"Right":{"Left":{"Ident":"_compose"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":8}},"kind":null,"sourceSpan":{"end":[3,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/NewOperators2.purs","start":[3,1]},"title":"(>>>)"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[5,59],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/NewOperators2.purs","start":[5,1]},"title":"_compose"}],"name":"NewOperators2","reExports":[]}
diff --git a/tests/purs/docs/output/NotAllCtors/docs.json b/tests/purs/docs/output/NotAllCtors/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/NotAllCtors/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"NotAllCtors","reExports":[]}
diff --git a/tests/purs/docs/output/OperatorSection/docs.json b/tests/purs/docs/output/OperatorSection/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/OperatorSection/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[3,18],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[3,13]},"title":"Nil"},{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[["OperatorSection"],"List"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"declType":"dataConstructor"},"sourceSpan":{"end":[3,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[3,19]},"title":"Cons"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["OperatorSection"],"Foldable"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["OperatorSection"],"List"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,21],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[10,1]},"title":"<anonymous>"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[3,36],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[3,1]},"title":"List"},{"children":[],"comments":null,"info":{"alias":[["OperatorSection"],{"Right":{"Right":"Cons"}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":6}},"kind":null,"sourceSpan":{"end":[5,19],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[5,1]},"title":"(:)"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[8,54],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[8,3]},"title":"foldl"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["OperatorSection"],"Foldable"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["OperatorSection"],"List"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,21],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[10,1]},"title":"<anonymous>"}],"comments":null,"info":{"arguments":[["f",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[8,54],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/OperatorSection.purs","start":[7,1]},"title":"Foldable"}],"name":"OperatorSection","reExports":[]}
diff --git a/tests/purs/docs/output/Prelude/docs.json b/tests/purs/docs/output/Prelude/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prelude/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}],"declType":"dataConstructor"},"sourceSpan":{"end":[3,23],"name":"bower_components/purescript-prelude/src/Prelude.purs","start":[3,14]},"title":"Unit"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[3,23],"name":"bower_components/purescript-prelude/src/Prelude.purs","start":[3,1]},"title":"Unit"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prelude"],"Unit"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[5,13],"name":"bower_components/purescript-prelude/src/Prelude.purs","start":[5,1]},"title":"unit"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[8,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","start":[8,15]},"title":"True"},{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[8,29],"name":"bower_components/purescript-prelude/src/Prelude.purs","start":[8,22]},"title":"False"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[8,29],"name":"bower_components/purescript-prelude/src/Prelude.purs","start":[8,1]},"title":"Boolean2"}],"name":"Prelude","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.Boolean/docs.json b/tests/purs/docs/output/Prim.Boolean/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.Boolean/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Boolean module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level `Boolean` data structure.","declarations":[{"children":[],"comments":"The 'True' boolean type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"True"},{"children":[],"comments":"The 'False' boolean type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"False"}],"name":"Prim.Boolean","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.Coerce/docs.json b/tests/purs/docs/output/Prim.Coerce/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.Coerce/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Coerce module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains an automatically solved type class for coercing types that have provably-identical runtime representations with [purescript-safe-coerce](https://pursuit.purescript.org/packages/purescript-safe-coerce).","declarations":[{"children":[],"comments":"Coercible is a two-parameter type class that has instances for types `a`\nand `b` if the compiler can infer that they have the same representation.\nCoercible constraints are solved according to the following rules:\n\n* _reflexivity_, any type has the same representation as itself:\n`Coercible a a` holds.\n\n* _symmetry_, if a type `a` can be coerced to some other type `b`, then `b`\ncan also be coerced back to `a`: `Coercible a b` implies `Coercible b a`.\n\n* _transitivity_, if a type `a` can be coerced to some other type `b` which\ncan be coerced to some other type `c`, then `a` can also be coerced to `c`:\n`Coercible a b` and `Coercible b c` imply `Coercible a c`.\n\n* Newtypes can be freely wrapped and unwrapped when their constructor is\nin scope:\n\n      newtype Age = Age Int\n\n`Coercible Int Age` and `Coercible Age Int` hold since `Age` has the same\nruntime representation than `Int`.\n\nNewtype constructors have to be in scope to preserve abstraction. It's\ncommon to declare a newtype to encode some invariants (non emptiness of\narrays with `Data.Array.NonEmpty.NonEmptyArray` for example), hide its\nconstructor and export smart constructors instead. Without this restriction,\nthe guarantees provided by such newtypes would be void.\n\n* If none of the above are applicable, two types of kind `Type` may be\ncoercible, but only if their heads are the same. For example,\n`Coercible (Maybe a) (Either a b)` does not hold because `Maybe` and\n`Either` are different. Those types don't share a common runtime\nrepresentation so coercing between them would be unsafe. In addition their\narguments may need to be identical or coercible, depending on the _roles_\nof the head's type parameters. Roles are documented in [the PureScript\nlanguage reference](https://github.com/purescript/documentation/blob/master/language/Roles.md).\n\nCoercible being polykinded, we can also coerce more than types of kind `Type`:\n\n* Rows are coercible when they have the same labels, when the corresponding\npairs of types are coercible and when their tails are coercible:\n`Coercible ( label :: a | r ) ( label :: b | s )` holds when\n`Coercible a b` and `Coercible r s` do. Closed rows cannot be coerced to\nopen rows.\n\n* Higher kinded types are coercible if they are coercible when fully\nsaturated: `Coercible (f :: _ -> Type) (g :: _ -> Type)` holds when\n`Coercible (f a) (g a)` does.\n\nThis rule may seem puzzling since there is no term of type `_ -> Type` to\napply `coerce` to, but it is necessary when coercing types with higher\nkinded parameters.\n","info":{"arguments":[["a",{"annotation":[],"contents":"k","tag":"TypeVar"}],["b",{"annotation":[],"contents":"k","tag":"TypeVar"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Coercible"}],"name":"Prim.Coerce","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.Int/docs.json b/tests/purs/docs/output/Prim.Int/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.Int/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Int module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with type-level intural numbers.","declarations":[{"children":[],"comments":"Compiler solved type class for adding type-level `Int`s.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["sum",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["sum"]],[["left","sum"],["right"]],[["right","sum"],["left"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Add"},{"children":[],"comments":"Compiler solved type class for comparing two type-level `Int`s.\nProduces an `Ordering`.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["ordering",{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["ordering"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Compare"},{"children":[],"comments":"Compiler solved type class for multiplying type-level `Int`s.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["product",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["product"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Mul"},{"children":[],"comments":"Compiler solved type class for converting a type-level `Int` into a type-level `String` (i.e. `Symbol`).\n","info":{"arguments":[["int",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["string",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["int"],["string"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"ToString"}],"name":"Prim.Int","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.Ordering/docs.json b/tests/purs/docs/output/Prim.Ordering/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.Ordering/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Ordering module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level `Ordering` data structure.","declarations":[{"children":[],"comments":"The `Ordering` kind represents the three possibilities of comparing two\ntypes of the same kind: `LT` (less than), `EQ` (equal to), and\n`GT` (greater than).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Ordering"},{"children":[],"comments":"The 'less than' ordering type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"LT"},{"children":[],"comments":"The 'equal to' ordering type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"EQ"},{"children":[],"comments":"The 'greater than' ordering type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"GT"}],"name":"Prim.Ordering","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.Row/docs.json b/tests/purs/docs/output/Prim.Row/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.Row/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Row module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with row types.","declarations":[{"children":[],"comments":"The Union type class is used to compute the union of two rows of types\n(left-biased, including duplicates).\n\nThe third type argument represents the union of the first two.\n","info":{"arguments":[["left",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["right",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["union",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["left","right"],["union"]],[["right","union"],["left"]],[["union","left"],["right"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Union"},{"children":[],"comments":"The Nub type class is used to remove duplicate labels from rows.\n","info":{"arguments":[["original",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["nubbed",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["original"],["nubbed"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Nub"},{"children":[],"comments":"The Lacks type class asserts that a label does not occur in a given row.\n","info":{"arguments":[["label",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["row",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Lacks"},{"children":[],"comments":"The Cons type class is a 4-way relation which asserts that one row of\ntypes can be obtained from another by inserting a new label/type pair on\nthe left.\n","info":{"arguments":[["label",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["a",{"annotation":[],"contents":"k","tag":"TypeVar"}],["tail",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["row",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["label","a","tail"],["row"]],[["label","row"],["a","tail"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Cons"}],"name":"Prim.Row","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.RowList/docs.json b/tests/purs/docs/output/Prim.RowList/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.RowList/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.RowList module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level list (`RowList`) that represents an ordered view of a row of types.","declarations":[{"children":[],"comments":"A type level list representation of a row of types.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"RowList"},{"children":[],"comments":"Constructs a new `RowList` from a label, a type, and an existing tail\n`RowList`.  E.g: `Cons \"x\" Int (Cons \"y\" Int Nil)`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":{"identifier":"k","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Cons"},{"children":[],"comments":"The empty `RowList`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":{"identifier":"k","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Nil"},{"children":[],"comments":"Compiler solved type class for generating a `RowList` from a closed row\nof types.  Entries are sorted by label and duplicates are preserved in\nthe order they appeared in the row.\n","info":{"arguments":[["row",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["list",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["row"],["list"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"RowToList"}],"name":"Prim.RowList","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.Symbol/docs.json b/tests/purs/docs/output/Prim.Symbol/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.Symbol/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Symbol module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with `Symbols`.","declarations":[{"children":[],"comments":"Compiler solved type class for appending `Symbol`s together.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["appended",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["appended"]],[["right","appended"],["left"]],[["appended","left"],["right"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Append"},{"children":[],"comments":"Compiler solved type class for comparing two `Symbol`s.\nProduces an `Ordering`.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["ordering",{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["ordering"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Compare"},{"children":[],"comments":"Compiler solved type class for either splitting up a symbol into its\nhead and tail or for combining a head and tail into a new symbol.\nRequires the head to be a single character and the combined string\ncannot be empty.\n","info":{"arguments":[["head",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["tail",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["symbol",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["head","tail"],["symbol"]],[["symbol"],["head","tail"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Cons"}],"name":"Prim.Symbol","reExports":[]}
diff --git a/tests/purs/docs/output/Prim.TypeError/docs.json b/tests/purs/docs/output/Prim.TypeError/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim.TypeError/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.TypeError module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains type classes that provide custom type error and warning functionality.","declarations":[{"children":[],"comments":"The Warn type class allows a custom compiler warning to be displayed.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"arguments":[["message",{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Warn"},{"children":[],"comments":"The Fail type class is part of the custom type errors feature. To provide\na custom type error when someone tries to use a particular instance,\nwrite that instance out with a Fail constraint.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"arguments":[["message",{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Fail"},{"children":[],"comments":"`Doc` is the kind of type-level documents.\n\nThis kind is used with the `Fail` and `Warn` type classes.\nBuild up a `Doc` with `Text`, `Quote`, `QuoteLabel`, `Beside`, and `Above`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Doc"},{"children":[],"comments":"The Text type constructor makes a Doc from a Symbol\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Text"},{"children":[],"comments":"The Quote type constructor renders any concrete type as a Doc\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":{"identifier":"k","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Quote"},{"children":[],"comments":"The `QuoteLabel` type constructor will produce a `Doc` when given a `Symbol`. When the resulting `Doc` is rendered\nfor a `Warn` or `Fail` constraint, a syntactically valid label will be produced, escaping with quotes as needed.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"QuoteLabel"},{"children":[],"comments":"The Beside type constructor combines two Docs horizontally\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Beside"},{"children":[],"comments":"The Above type constructor combines two Docs vertically\nin a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Above"}],"name":"Prim.TypeError","reExports":[]}
diff --git a/tests/purs/docs/output/Prim/docs.json b/tests/purs/docs/output/Prim/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Prim/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The `Prim` module is embedded in the PureScript compiler in order to provide compiler support for certain types &mdash; for example, value literals, or syntax sugar. It is implicitly imported unqualified in every module except those that list it as a qualified import.\n\n`Prim` does not include additional built-in types and kinds that are defined deeper in the compiler such as Type wildcards (e.g. `f :: _ -> Int`) and Quantified Types. Rather, these are documented in [the PureScript language reference](https://github.com/purescript/documentation/blob/master/language/Types.md).\n","declarations":[{"children":[],"comments":"A function, which takes values of the type specified by the first type\nparameter, and returns values of the type specified by the second.\nIn the JavaScript backend, this is a standard JavaScript Function.\n\nThe type constructor `(->)` is syntactic sugar for this type constructor.\nIt is recommended to use `(->)` rather than `Function`, where possible.\n\nThat is, prefer this:\n\n    f :: Number -> Number\n\nto either of these:\n\n    f :: Function Number Number\n    f :: (->) Number Number\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Function"},{"children":[],"comments":"An Array: a data structure supporting efficient random access. In\nthe JavaScript backend, values of this type are represented as JavaScript\nArrays at runtime.\n\nConstruct values using literals:\n\n    x = [1,2,3,4,5] :: Array Int\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Array"},{"children":[],"comments":"The type of records whose fields are known at compile time. In the\nJavaScript backend, values of this type are represented as JavaScript\nObjects at runtime.\n\nThe type signature here means that the `Record` type constructor takes\na row of concrete types. For example:\n\n    type Person = Record (name :: String, age :: Number)\n\nThe syntactic sugar with curly braces `{ }` is generally preferred, though:\n\n    type Person = { name :: String, age :: Number }\n\nThe row associates a type to each label which appears in the record.\n\n_Technical note_: PureScript allows duplicate labels in rows, and the\nmeaning of `Record r` is based on the _first_ occurrence of each label in\nthe row `r`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Record"},{"children":[],"comments":"A double precision floating point number (IEEE 754).\n\nConstruct values of this type with literals.\nNegative literals must be wrapped in parentheses if the negation sign could be mistaken\nfor an infix operator:\n\n    x = 35.23 :: Number\n    y = -1.224e6 :: Number\n    z = exp (-1.0) :: Number\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Number"},{"children":[],"comments":"A 32-bit signed integer. See the `purescript-integers` package for details\nof how this is accomplished when compiling to JavaScript.\n\nConstruct values of this type with literals. Hexadecimal syntax is supported.\nNegative literals must be wrapped in parentheses if the negation sign could be mistaken\nfor an infix operator:\n\n    x = -23 :: Int\n    y = 0x17 :: Int\n    z = complement (-24) :: Int\n\nIntegers used as types are considered to have kind `Int`.\nUnlike value-level `Int`s, which must be representable as a 32-bit signed integer,\ntype-level `Int`s are unbounded. Hexadecimal support is also supported at the type level.\n\n    type One :: Int\n    type One = 1\n    \n    type Beyond32BitSignedInt :: Int\n    type Beyond32BitSignedInt = 2147483648\n    \n    type HexInt :: Int\n    type HexInt = 0x17\n\nNegative integer literals at the type level must be\nwrapped in parentheses if the negation sign could be mistaken for an infix operator.\n\n    type NegativeOne = -1\n    foo :: Proxy (-1) -> ...\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Int"},{"children":[],"comments":"A String. As in JavaScript, String values represent sequences of UTF-16\ncode units, which are not required to form a valid encoding of Unicode\ntext (for example, lone surrogates are permitted).\n\nConstruct values of this type with literals, using double quotes `\"`:\n\n    x = \"hello, world\" :: String\n\nMulti-line string literals are also supported with triple quotes (`\"\"\"`):\n\n    x = \"\"\"multi\n       line\"\"\"\n\nAt the type level, string literals represent types with kind `Symbol`.\nThese types will have kind `String` in a future release:\n\n    type Hello :: Symbol\n    type Hello = \"Hello, world\"\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"String"},{"children":[],"comments":"A single character (UTF-16 code unit). The JavaScript representation is a\nnormal `String`, which is guaranteed to contain one code unit. This means\nthat astral plane characters (i.e. those with code point values greater\nthan `0xFFFF`) cannot be represented as `Char` values.\n\nConstruct values of this type with literals, using single quotes `'`:\n\n    x = 'a' :: Char\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Char"},{"children":[],"comments":"A JavaScript Boolean value.\n\nConstruct values of this type with the literals `true` and `false`.\n\nThe `True` and `False` types defined in `Prim.Boolean` have this type as their kind.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Boolean"},{"children":[],"comments":"The Partial type class is used to indicate that a function is *partial,*\nthat is, it is not defined for all inputs. In practice, attempting to use\na partial function with a bad input will usually cause an error to be\nthrown, although it is not safe to assume that this will happen in all\ncases. For more information, see\n[purescript-partial](https://pursuit.purescript.org/packages/purescript-partial/).\n","info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Partial"},{"children":[],"comments":"`Type` is the kind of all proper types: those that classify value-level terms.\nFor example the type `Boolean` has kind `Type`; denoted by `Boolean :: Type`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Type"},{"children":[],"comments":"`Constraint` is the kind of type class constraints.\nFor example, a type class declaration like this:\n\n    class Semigroup a where\n      append :: a -> a -> a\n\nhas the kind signature:\n\n    class Semigroup :: Type -> Constraint\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Constraint"},{"children":[],"comments":"`Symbol` is the kind of type-level strings.\n\nConstruct types of this kind using the same literal syntax as documented\nfor strings.\n\n    type Hello :: Symbol\n    type Hello = \"Hello, world\"\n\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Symbol"},{"children":[],"comments":"`Row` is the kind constructor of label-indexed types which map type-level strings to other types.\nThe most common use of `Row` is `Row Type`, a row mapping labels to basic (of kind `Type`) types:\n\n    type ExampleRow :: Row Type\n    type ExampleRow = ( name :: String, values :: Array Int )\n\nThis is the kind of `Row` expected by the `Record` type constructor.\nMore advanced row kinds like `Row (Type -> Type)` are used much less frequently.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Row"}],"name":"Prim","reExports":[]}
diff --git a/tests/purs/docs/output/PrimSubmodules/docs.json b/tests/purs/docs/output/PrimSubmodules/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/PrimSubmodules/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[5,33],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/PrimSubmodules.purs","start":[5,28]},"title":"Lol"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom"],"typeArguments":[["a",{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"}]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[5,37],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/PrimSubmodules.purs","start":[5,1]},"title":"Lol"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["PrimSubmodules"],"Lol"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","Ordering"],"LT"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[7,14],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/PrimSubmodules.purs","start":[7,1]},"title":"x"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["PrimSubmodules"],"Lol"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","Ordering"],"EQ"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[10,14],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/PrimSubmodules.purs","start":[10,1]},"title":"y"}],"name":"PrimSubmodules","reExports":[]}
diff --git a/tests/purs/docs/output/ReExportedTypeClass/docs.json b/tests/purs/docs/output/ReExportedTypeClass/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/ReExportedTypeClass/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"ReExportedTypeClass","reExports":[]}
diff --git a/tests/purs/docs/output/RoleAnnotationDocs/docs.json b/tests/purs/docs/output/RoleAnnotationDocs/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/RoleAnnotationDocs/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[3,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[3,18]},"title":"D_RNP"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["a",null],["b",null],["c",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k2","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k3","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k2","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k3","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[3,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[3,1]},"title":"D_RNP"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[6,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[6,18]},"title":"D_NPR"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Nominal","Phantom","Representational"],"typeArguments":[["a",null],["b",null],["c",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k2","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k3","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k2","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k3","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[6,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[6,1]},"title":"D_NPR"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[9,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[9,18]},"title":"D_PRN"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Phantom","Representational","Nominal"],"typeArguments":[["a",null],["b",null],["c",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k2","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k3","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k2","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k3","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[9,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[9,1]},"title":"D_PRN"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Nominal","Nominal","Nominal"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":null,"sourceSpan":{"end":[12,60],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[12,1]},"title":"FFI_NNN"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":null,"sourceSpan":{"end":[14,60],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[14,1]},"title":"FFI_RNP"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,74],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[17,1]},"title":"FFI_Higher1"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,74],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[20,1]},"title":"FFI_Higher2"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,74],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[23,1]},"title":"FFI_Higher3"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[26,84],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[26,1]},"title":"FFI_Higher4"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":null,"sourceSpan":{"end":[29,69],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[29,1]},"title":"FFI_HeadParens"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":null,"sourceSpan":{"end":[32,69],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[32,1]},"title":"FFI_TailParens"},{"children":[],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Nominal","Phantom"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":null,"sourceSpan":{"end":[35,70],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/RoleAnnotationDocs.purs","start":[35,1]},"title":"FFI_WholeParens"}],"name":"RoleAnnotationDocs","reExports":[]}
diff --git a/tests/purs/docs/output/Shebang1Undocumented/docs.json b/tests/purs/docs/output/Shebang1Undocumented/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Shebang1Undocumented/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Shebang1Undocumented","reExports":[]}
diff --git a/tests/purs/docs/output/Shebang2Undocumented/docs.json b/tests/purs/docs/output/Shebang2Undocumented/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Shebang2Undocumented/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Shebang2Undocumented","reExports":[]}
diff --git a/tests/purs/docs/output/Shebang3Undocumented/docs.json b/tests/purs/docs/output/Shebang3Undocumented/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Shebang3Undocumented/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"Normal doc comment\n","declarations":[],"name":"Shebang3Undocumented","reExports":[]}
diff --git a/tests/purs/docs/output/Shebang4Undocumented/docs.json b/tests/purs/docs/output/Shebang4Undocumented/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Shebang4Undocumented/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"Normal doc comment\n","declarations":[],"name":"Shebang4Undocumented","reExports":[]}
diff --git a/tests/purs/docs/output/SolitaryTypeClassMember/docs.json b/tests/purs/docs/output/SolitaryTypeClassMember/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/SolitaryTypeClassMember/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"SolitaryTypeClassMember","reExports":[]}
diff --git a/tests/purs/docs/output/SomeTypeClass/docs.json b/tests/purs/docs/output/SomeTypeClass/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/SomeTypeClass/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[5,14],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/SomeTypeClass.purs","start":[5,3]},"title":"member"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[5,14],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/SomeTypeClass.purs","start":[4,1]},"title":"SomeClass"}],"name":"SomeTypeClass","reExports":[]}
diff --git a/tests/purs/docs/output/Transitive1/docs.json b/tests/purs/docs/output/Transitive1/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Transitive1/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Transitive1","reExports":[]}
diff --git a/tests/purs/docs/output/Transitive2/docs.json b/tests/purs/docs/output/Transitive2/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Transitive2/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Transitive2","reExports":[]}
diff --git a/tests/purs/docs/output/Transitive3/docs.json b/tests/purs/docs/output/Transitive3/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Transitive3/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,19],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/Transitive3.purs","start":[3,1]},"title":"transitive3"}],"name":"Transitive3","reExports":[]}
diff --git a/tests/purs/docs/output/TypeClassWithFunDeps/docs.json b/tests/purs/docs/output/TypeClassWithFunDeps/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/TypeClassWithFunDeps/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[5,20],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","start":[5,3]},"title":"aMember"}],"comments":null,"info":{"arguments":[["a",null],["b",null],["c",null],["d",null],["e",null]],"declType":"typeClass","fundeps":[[["a","b"],["c"]],[["c"],["d","e"]]],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k2","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"k3","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k2","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k3","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[5,20],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","start":[4,1]},"title":"TypeClassWithFunDeps"}],"name":"TypeClassWithFunDeps","reExports":[]}
diff --git a/tests/purs/docs/output/TypeClassWithoutMembers/docs.json b/tests/purs/docs/output/TypeClassWithoutMembers/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/TypeClassWithoutMembers/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"TypeClassWithoutMembers","reExports":[]}
diff --git a/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/docs.json b/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"TypeClassWithoutMembersIntermediate","reExports":[]}
diff --git a/tests/purs/docs/output/TypeLevelString/docs.json b/tests/purs/docs/output/TypeLevelString/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/TypeLevelString/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","TypeError"],"Text"],"tag":"TypeConstructor"},{"annotation":[],"contents":"oops","tag":"TypeLevelString"}],"tag":"TypeApp"}],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeLevelString"],"Bar"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["TypeLevelString"],"Foo"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[9,49],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeLevelString.purs","start":[9,1]},"title":"fooBar"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[5,9],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeLevelString.purs","start":[5,1]},"title":"Foo"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","TypeError"],"Text"],"tag":"TypeConstructor"},{"annotation":[],"contents":"oops","tag":"TypeLevelString"}],"tag":"TypeApp"}],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeLevelString"],"Bar"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["TypeLevelString"],"Foo"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[9,49],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeLevelString.purs","start":[9,1]},"title":"fooBar"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[7,12],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeLevelString.purs","start":[7,1]},"title":"Bar"}],"name":"TypeLevelString","reExports":[]}
diff --git a/tests/purs/docs/output/TypeOpAliases/docs.json b/tests/purs/docs/output/TypeOpAliases/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/TypeOpAliases/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"arguments":[["a",null],["b",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[3,24],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[3,1]},"title":"AltFn"},{"children":[],"comments":null,"info":{"alias":[["TypeOpAliases"],{"Left":"AltFn"}],"declType":"alias","fixity":{"associativity":"infixr","precedence":6}},"kind":null,"sourceSpan":{"end":[5,26],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[5,1]},"title":"type (~>)"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"BinaryNoParensType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[7,43],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[7,1]},"title":"test1"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":"b","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"BinaryNoParensType"}],"tag":"BinaryNoParensType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[8,50],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[8,1]},"title":"test2"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":"b","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"BinaryNoParensType"},"tag":"ParensInType"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"BinaryNoParensType"}],"tag":"BinaryNoParensType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[9,59],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[9,1]},"title":"test3"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"~>"],"tag":"TypeOp"},{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"BinaryNoParensType"},"tag":"ParensInType"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"BinaryNoParensType"},"tag":"ParensInType"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"BinaryNoParensType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[10,61],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[10,1]},"title":"test4"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[12,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[12,16]},"title":"Tuple"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["TypeOpAliases"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,24],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[27,1]},"title":"showTuple"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"TestL"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Either"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,27],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[39,1]},"title":"testLEither"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"TestR"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Either"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[43,1]},"title":"testREither"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[12,27],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[12,1]},"title":"Tuple"},{"children":[],"comments":null,"info":{"alias":[["TypeOpAliases"],{"Right":{"Right":"Tuple"}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":6}},"kind":null,"sourceSpan":{"end":[14,20],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[14,1]},"title":"(×)"},{"children":[],"comments":null,"info":{"alias":[["TypeOpAliases"],{"Left":"Tuple"}],"declType":"alias","fixity":{"associativity":"infixl","precedence":6}},"kind":null,"sourceSpan":{"end":[15,25],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[15,1]},"title":"type (×)"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[17,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[17,17]},"title":"Left"},{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[17,33],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[17,26]},"title":"Right"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"TestL"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Either"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,27],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[39,1]},"title":"testLEither"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"TestR"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Either"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[43,1]},"title":"testREither"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[17,35],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[17,1]},"title":"Either"},{"children":[],"comments":null,"info":{"alias":[["TypeOpAliases"],{"Left":"Either"}],"declType":"alias","fixity":{"associativity":"infixl","precedence":5}},"kind":null,"sourceSpan":{"end":[19,26],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[19,1]},"title":"type (⊕)"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"×"],"tag":"TypeOp"},{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"×"],"tag":"TypeOp"},{"annotation":[],"contents":"b","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"BinaryNoParensType"}],"tag":"BinaryNoParensType"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[21,31],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[21,1]},"title":"third"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[25,22],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[25,3]},"title":"show"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["TypeOpAliases"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,24],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[27,1]},"title":"showTuple"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[25,22],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[24,1]},"title":"Show"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[33,13],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[33,3]},"title":"testL"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"TestL"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Either"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,27],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[39,1]},"title":"testLEither"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[33,13],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[32,1]},"title":"TestL"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[36,13],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[36,3]},"title":"testR"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"TestR"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Either"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["TypeOpAliases"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,23],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[43,1]},"title":"testREither"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[36,13],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeOpAliases.purs","start":[35,1]},"title":"TestR"}],"name":"TypeOpAliases","reExports":[]}
diff --git a/tests/purs/docs/output/TypeSynonym/docs.json b/tests/purs/docs/output/TypeSynonym/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/TypeSynonym/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[3,17],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeSynonym.purs","start":[3,1]},"title":"MyInt"}],"name":"TypeSynonym","reExports":[]}
diff --git a/tests/purs/docs/output/TypeSynonymInstance/docs.json b/tests/purs/docs/output/TypeSynonymInstance/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/TypeSynonymInstance/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["TypeSynonym"],"MyInt"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[7,26],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","start":[7,14]},"title":"MyNT"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["TypeSynonymInstance"],"MyNT"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":null,"tag":"TypeWildcard"}],"tag":"TypeApp"}},"sourceSpan":{"end":[9,41],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","start":[9,1]},"title":"ntMyNT"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[7,26],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","start":[7,1]},"title":"MyNT"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[11,8],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","start":[11,1]},"title":"foo"}],"name":"TypeSynonymInstance","reExports":[]}
diff --git a/tests/purs/docs/output/UTF8/docs.json b/tests/purs/docs/output/UTF8/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/UTF8/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"üÜäÄ 😰\n","info":{"declType":"value","type":{"annotation":[],"contents":[["Prelude"],"Unit"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[6,14],"name":"/home/jordan/programming/purescript/tests/purs/docs/src/UTF8.purs","start":[6,1]},"title":"thing"}],"name":"UTF8","reExports":[]}
diff --git a/tests/purs/docs/output/Virtual/docs.json b/tests/purs/docs/output/Virtual/docs.json
deleted file mode 100644
--- a/tests/purs/docs/output/Virtual/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[],"name":"Virtual","reExports":[]}
diff --git a/tests/purs/docs/output/cache-db.json b/tests/purs/docs/output/cache-db.json
deleted file mode 100644
--- a/tests/purs/docs/output/cache-db.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"Ado":{"src/Ado.purs":["2022-04-04T14:32:49Z","bd980ae20d61e0e34d23507b1d25598f27407a78cf70084327506f21cc02d85df1bd1b6937459665a8dd9df5bb43ec5947b6e94c16c852aba233747e05a9d58f"]},"ChildDeclOrder":{"src/ChildDeclOrder.purs":["2022-04-04T14:32:49Z","41a7be97fffe1bbbf925ccb56b68246abb8684b23529fc25e07827b57b32b60ccd82d5c9a2279dc23be1f8803cff8267fa296509b873ec337ffa15ee0e32e2c9"]},"Clash":{"src/Clash.purs":["2022-04-04T14:32:49Z","7b70d019ea46b72149e185d82bc1345113e8a3977a886aa31ac8a268c6c63c7b93553e1586c45e023e49e485d3f6523a4a11efc8dc70dd8bac5d8b9cac4e4c2d"]},"Clash1":{"src/Clash1.purs":["2022-04-04T14:32:49Z","bd09c1fd0308ce61d83bef03d3b2366601df559ef8cc9c09f17d963a1bfb2b2e373dcbf5729a3e465c635fbf0035ae09ea3ba58b7844b56586dc3baf9d857bb5"]},"Clash1a":{"src/Clash1a.purs":["2022-04-04T14:32:49Z","b5c374c74a46d3f633c948de256e299dc2713857ce09441b5ae2f03afdd0468610088f39854f69848c1c9aecf3441b1b39e0919e499280a19d69b83de07d5d0b"]},"Clash2":{"src/Clash2.purs":["2022-04-04T14:32:49Z","10c61c6600084fdcc0ee93608a354fd7efa7edab67ac8cce131e522b597080b2927dc7bb1a6c98765dfc9a30583dc5bea2514d2932554ab1657c664a81a0a81b"]},"Clash2a":{"src/Clash2a.purs":["2022-04-04T14:32:49Z","b002aac5be65ac1cb55d10518840293780ea6d4a42b045172544ab3478ea83252f0672f0e1d4ad1599db3955f55202738ba1ee254b8ad94e914fc43fc1f6750f"]},"ConstrainedArgument":{"src/ConstrainedArgument.purs":["2022-04-04T14:32:49Z","6caa6cc505c6574957afe8e703f6e9869211e9c0a0676ba36a79d2a8b7e3c2c1570aae714cd6acc37e5b206745941460c1cf370a3bbd783c79b89351681ec890"]},"Data.Newtype":{"bower_components/purescript-newtype/src/Data/Newtype.purs":["2022-08-10T02:48:53.297467233Z","408eb6f95efb52faff05d73c757d21cebdd3b58dce3f5b8cfb5f0772224ca7e6ff9b5df0ab9ea40ce0f8448664fe56028af844b2c5dc32e5712b7d9d1541f2b7"]},"DeclOrder":{"src/DeclOrder.purs":["2022-04-04T14:32:49Z","a8c6ab9c335037c255ae6e0124a107f2e2462c2eebc2ff3637273ba436f2f3589ae203919ff5c8c61106b0542114ba3eba66426d8b5e316089bc1f4efb72643a"]},"DeclOrderNoExportList":{"src/DeclOrderNoExportList.purs":["2022-04-04T14:32:49Z","379def50dfd7a01dd2b057c707ea8ee53147d41c7dc28083c3827ccc213816840fd26d784a78bd1eabd105231e5479c7bfeebfcb03d1e2f3e8174ab173d740c4"]},"Desugar":{"src/Desugar.purs":["2022-04-04T14:32:49Z","50ceefe5cbac286908cc7070f4e94f57c62b5c91245d5a8c66d7f4565e3d037e4cf11524c4c790664588a0a5c4216390b5138be9ec93e14d0f82a2c59c8f561a"]},"DocComments":{"src/DocComments.purs":["2022-04-04T14:32:49Z","220498626601722feb58dd23dd80ac970f6ba7df8e8c2ad604ed833933f6b36219fb5f1d0b9963ffc7e9314043760055ab547fac5784a28416a4851f257a635b"]},"DocCommentsClassMethod":{"src/DocCommentsClassMethod.purs":["2022-04-04T14:32:49Z","f55a03f2b2624a9ca01adc8372bad4b7e46e8ef1a52ec41c5992767146c9a2354320a3a38587cbf2e78fec118430f193fdcb1cdd9600cd9f755dbbc2e36e46b7"]},"DocCommentsDataConstructor":{"src/DocCommentsDataConstructor.purs":["2022-04-04T14:32:49Z","68d644ce63642bd55d8338e78e0070c409d3c970a2967338cf612d7a3217813fd98a08e1905776572819cadbc08cdd4bec4a7c1473974a9f3f5d5b1149d33257"]},"DocCommentsMerge":{"src/DocCommentsMerge.purs":["2022-04-04T14:32:49Z","08e74333f59b1991e5c044debca1b8d2be7193898cc501c6c422b2f3e4c6e6aba8562cfa7b38dac2363e567357722e79d0fcc4757ee91ed067e7179a3615bdbd"]},"DuplicateNames":{"src/DuplicateNames.purs":["2022-04-04T14:32:49Z","5652f5da0ae79185fb27bce13793bd7752779364e0d1c7c56be2d213853c26ad0abff8536a0d34090a079980e498c837026521efe4a8cfc1b1a16ec70c724eed"]},"Example":{"src/Example.purs":["2022-04-04T14:32:49Z","3b700a99cc5ee257009553d27a2d25f71f68f006e9deec2b3578f01c7fe4e77de1e929dc110dfcd51d68685ad3ab6b09b0147fe63719861e8a9e480a64e286d9"]},"Example2":{"src/Example2.purs":["2022-04-04T14:32:49Z","6a479db4e40f66b1e29889516a55cfb22b15b2b8c4531b9cf20307a965af3dc0a6dab4eccc31cca4eacaaa158a01c58ff995ac6f01b2e1ed5571c44fa3bf2536"]},"ExplicitExport":{"src/ExplicitExport.purs":["2022-04-04T14:32:49Z","fe733409eb325c971f84b6414a1fc9e08793d2271eebcd670ceefd5c5aef837ee76ec5cb5bed96d87ea791a7521c76668a71be5cd8fb14209414893dc20d3d47"]},"ExplicitTypeSignatures":{"src/ExplicitTypeSignatures.purs":["2022-04-04T14:32:49Z","78a70441c9966f04c6c32a74cbba299f0f8ea870c664e738eb0d8f8cc5929edb7bb697170fc306c9ee69fa4e2f0112af15c8bdb29d63645cdf6f2916a122a0bd"]},"ImportedTwice":{"src/ImportedTwice.purs":["2022-04-04T14:32:49Z","be9a0cb1e75c689c3af6817a5750862915e70a0017476cce4c539a3c7ce5b33554aa14d2668bd131b89bb28d65b5ddaa79abfb2a538d606f1b11b5ef0ec79067"]},"ImportedTwiceA":{"src/ImportedTwiceA.purs":["2022-04-04T14:32:49Z","883c8abaefe0dbacbcdea4c53eab41da26687680274419720b1e5d6510bf5127b7ba06df23515ad34f7ffc4626f0064d7867e2b4a5f255a6b573d219926364de"]},"ImportedTwiceB":{"src/ImportedTwiceB.purs":["2022-04-04T14:32:49Z","48cc2ac8ce40b1d0e3782fcb8ec798cf9c4838a595148055f1bb830d9b07d58780170ad3f8a90f43ac561aff2c52a5d8793480526a4768ebf1c8af1ff1b68751"]},"KindSignatureDocs":{"src/KindSignatureDocs.purs":["2022-04-04T14:32:49Z","c2a224affb04b4c5db4712d15bfa830999c634c135bf1595f4930dd682258f5a278477ffeba297c42af5d74878e73694180a932ee2ebf7ad8a2ff66c4df2135d"]},"MultiVirtual":{"src/MultiVirtual.purs":["2022-04-04T14:32:49Z","31bc7e2c2ebee39dbc89536db51493a2cb1843a9e1aed8b288ef16660877fd1abd5f4224d3325a415aabcf79bd5fe76ebb9257738b0193a50c79a20d48b5ab29"]},"MultiVirtual1":{"src/MultiVirtual1.purs":["2022-04-04T14:32:49Z","23f7975f7494bb84f9fc6fde9071ce04e86df774d81e2b027a85ab46c8237f9921ee926f4a4ad3e03c7799e485ce39e542d1dd94953c50c0d58ea0003cfc3842"]},"MultiVirtual2":{"src/MultiVirtual2.purs":["2022-04-04T14:32:49Z","f424ed7c0db709b6bb1e57f87069f484fd0db9dddd0475cd15d36bd58743e98729c42efd2df6ee8fbd18609c36c2247cf3428a5a7f1f5ed11e233a2b134990ba"]},"MultiVirtual3":{"src/MultiVirtual3.purs":["2022-04-04T14:32:49Z","a42415e3b8309bfa81ef127c61dba6f4001188dcee160a8e2f73399179a11262f12daf0205d6bec38fc605b637550f16b62e84a0f2a0f6999355d56ff2540405"]},"NewOperators":{"src/NewOperators.purs":["2022-04-04T14:32:49Z","f74cae05c73db1f629e199692c517866fb1683caab3c4509657a371733f30319f0c505ed57208757b3e43795aab5191000c834a501d9bd2bf0e58875873c5c40"]},"NewOperators2":{"src/NewOperators2.purs":["2022-04-04T14:32:49Z","c551a91aa792fb9ee4b5758c010761a53d4a14b8fbaa6b76b6bd9a318a28f245c9b090bdc4f77b904c873d9b71d59fbad3ccd9ad7c8773f5c1e57a22a0204844"]},"NotAllCtors":{"src/NotAllCtors.purs":["2022-04-04T14:32:49Z","6e0af26cf897b5dd6e8dd4d75988e5607118f6fdd5219aa192f477cc4d760d504bdec930d46af82a44950e3de4fe6c37664a4560a523a45097503b85c161bd96"]},"OperatorSection":{"src/OperatorSection.purs":["2022-05-27T04:56:24Z","64a9d1bdc2b7df3fe4124651fee37440b9c53b61d25fba7e9a1974c713c12679f227fdc700a6d97218c3628dce4ea9c8c3c5b4e30b5b8f8ecf6a5f6781599c7b"]},"Prelude":{"bower_components/purescript-prelude/src/Prelude.purs":["2022-08-10T02:48:53.301467266Z","7eb0b2f9b7aec29693f79be4642ccea792b1f54c7022a4f1395fb8f3a9b1ad6cbfb2e7685940b89ab21890c02949ec90d4823bd5c36a6b566ca9cb8ec561958f"]},"PrimSubmodules":{"src/PrimSubmodules.purs":["2022-05-27T04:56:24Z","6b03520e209171032fd18661077ef49b0547b488667b8316e8ec6104a49914fe58929d1dea64fde39ed5a88d814304d0db1d5cd56a3a4b2b5a625585666e42c6"]},"ReExportedTypeClass":{"src/ReExportedTypeClass.purs":["2022-04-04T14:32:49Z","1cc581d68e1ce113162ab851872e73645807f0deb1d2b970ebc04b314184fe30c3431212ffcf9eec09a56a2291e0050750ac6905f1884bc74d406d0323c4f804"]},"RoleAnnotationDocs":{"src/RoleAnnotationDocs.purs":["2022-04-04T14:32:49Z","87b1012eaa7e6312ca43aa23efa0ec76eefd72d9e306233a35d4ab9dd3d74ad2051ab11555a5d1136ea2c1800bbfadfa0b52bad30a5a4b9ef3a9aa6498474506"]},"Shebang1Undocumented":{"src/Shebang1Undocumented.purs":["2022-06-08T12:25:40Z","55cff97ade15395974b1d714467dd824c260851b08a4aa365abf1980e5e746b378379d6b62ac4f1174f20c56600df82b05ca17f21643d529d8f21cb54069d5dc"]},"Shebang2Undocumented":{"src/Shebang2Undocumented.purs":["2022-06-08T12:25:40Z","d64e34906077c41cc542cbd50a604fb5c311526805a8f62be192cd05c1f6c68b03b728cb9cb90ff005d99f6e60a2384b584800fc23cd0064104d077aa3e22108"]},"Shebang3Undocumented":{"src/Shebang3Undocumented.purs":["2022-06-08T12:25:40Z","b3f811c431e42fef7eb9682fd1312e49d60b0394df825dcc34c083b191ca0361250ad503d9e4bcb5e7da6c715dab6ad51e47f936a595a0e77b771d5b547a1e3d"]},"Shebang4Undocumented":{"src/Shebang4Undocumented.purs":["2022-06-08T12:25:40Z","96139bf4debfdfa7f7b250aec10644f819a017f87127acd0cac613da51402f88664f7aea99767cfdfc6658efbe7eba5fba57b127ea5a8d15ba70057f7b6ee0a6"]},"SolitaryTypeClassMember":{"src/SolitaryTypeClassMember.purs":["2022-04-04T14:32:49Z","f627c589b0a8f58d7bfdf28ecf87891a74e64e8399ce0ab645b7c58049fddc1ea3cbb3c34b862bec8576108d5258d9548ecfbbab98598671cc645a3f358ac852"]},"SomeTypeClass":{"src/SomeTypeClass.purs":["2022-04-04T14:32:49Z","d09fc77e6c6350e7e4941e2911e012271a49db4a75c57cf738d5865ca622d60b69337f969aa02b13fc869484cba00479212e4b8dbcb458c5723e7a5d73888368"]},"Transitive1":{"src/Transitive1.purs":["2022-04-04T14:32:49Z","42681f3d0fa143d36474d1cb2f464820bdb907bbc432cd91349f6acdd82657ecb4d9ad1d075c96c551bed37dada4615dd3ff64f912f2cc8a6d99b5e02ee51979"]},"Transitive2":{"src/Transitive2.purs":["2022-04-04T14:32:49Z","110a1bae420e0f0c05e9846fad483a1d035dfc3ba82c2cd81e44f548fd97965055b1a687ab86256f8cb6a3d79b4c4abe6f45d4728bbc04a7a1b0fedbca115b1e"]},"Transitive3":{"src/Transitive3.purs":["2022-04-04T14:32:49Z","65f7bb366ac8fab63084ff0229c9d55293db8126b539ff2cb53e511505995f426d50f4cca7d1f61fc53aaaaeed9d72791f9d9f12cc569d92e7bbe1d1908b093c"]},"TypeClassWithFunDeps":{"src/TypeClassWithFunDeps.purs":["2022-04-04T14:32:49Z","c828f194c8c679d97425ed7e04eb3c9bb04bc4c32542d7d6d7e4a36c6c734eb8ba1ef472ad2b0085d9a042a0724648b85a4605d8fe4995e1a32839b1fb1f0f23"]},"TypeClassWithoutMembers":{"src/TypeClassWithoutMembers.purs":["2022-04-04T14:32:49Z","3eac42652ce295ee47c340c4b86c91d0f6a8ad1f81824475fa4fc4ae8fd8bb77ceee6a46e31bebe9d2e8a980a7923432b41b0eff5cbf75580ee149e7d997e098"]},"TypeClassWithoutMembersIntermediate":{"src/TypeClassWithoutMembersIntermediate.purs":["2022-04-04T14:32:49Z","76d65083da1f6240b4c3b6c910af1326b9b9a538f4eb278b00ddf0bf67d9547c1cab0fae7661bbe4af6e7ecdea9fd26cc9ff9ea5b289d3c3994b3ccb3d099ba8"]},"TypeLevelString":{"src/TypeLevelString.purs":["2022-04-04T14:32:49Z","361dc3825ebd3efcd9a53dd900cc623f5eca14df82afc93f4d485d8b38e51eb0a72929b6cfb783b3d5c9bef46e6fd18c139fdbd10de484beb335e09ecee79388"]},"TypeOpAliases":{"src/TypeOpAliases.purs":["2022-04-04T14:32:49Z","5f1279d355f0e8f8c7d063950007ba060f0afdb83524fa10361f389d25fdacdf149c907cbdd94cf3d1a77751903701f22ba377203cd3b5d0c40e504699f94249"]},"TypeSynonym":{"src/TypeSynonym.purs":["2022-04-04T14:32:49Z","d1a0af1c2592e7f150bb0bf1dca4fc82ffe95b4f96be611408828d105d28bb6a4243a4c2799b1c35875a352e51a19464e4507b9c81d9cd34f0f55f8c94898ed9"]},"TypeSynonymInstance":{"src/TypeSynonymInstance.purs":["2022-04-04T14:32:49Z","336ba7262428a526f3824306f4ac472aebf637181b8aa23d823e6e70641539a14d57b52272d844af3e3a7fa85cdf4094042e464b61622a5a1c290ee8a6684733"]},"UTF8":{"src/UTF8.purs":["2022-04-04T14:32:49Z","60771c6d4974ef36414775e5a2511e99d08d5ba3945b010d7a399b77b88b310e10ad7d0016f7946ca3f524e7bbd1dce3575f7b2d81f8154bde197a3da411a624"]},"Virtual":{"src/Virtual.purs":["2022-04-04T14:32:49Z","a1e01c8b1a7c86c86942611649702ebf6689cf7559ce9ca0ba66052eafe64826b0770b33089e72cc26a3c90d75bcf62e0b75a6a90e085e70a6ec946b16456de2"]}}
diff --git a/tests/purs/docs/output/package.json b/tests/purs/docs/output/package.json
deleted file mode 100644
--- a/tests/purs/docs/output/package.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"type":"module"}
diff --git a/tests/purs/make/Module.purs b/tests/purs/make/Module.purs
deleted file mode 100644
--- a/tests/purs/make/Module.purs
+++ /dev/null
@@ -1,5 +0,0 @@
-module Module where
-x :: Int
-x = 1
-y :: Int
-y = 1
diff --git a/tests/purs/passing/4535.purs b/tests/purs/passing/4535.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/passing/4535.purs
@@ -0,0 +1,43 @@
+module Main where
+
+import Prelude
+
+import Data.Maybe (Maybe(..))
+import Data.Tuple.Nested ((/\), type (/\))
+import Effect (Effect)
+import Effect.Console (log)
+import Type.Proxy (Proxy(..))
+
+singleArgument :: forall @a. a -> Unit
+singleArgument _ = unit
+
+multiArgument :: forall @a @b. a -> b -> Unit
+multiArgument _ _ = unit
+
+singleApplication :: Int /\ Number -> Unit
+singleApplication = singleArgument @(Int /\ Number)
+
+-- Like expression applications, visible type applications are left-associative.
+-- This test accounts for subsequent type applications nested in this manner.
+appNestingWorks :: Int /\ Number -> Number /\ Int -> Unit
+appNestingWorks = multiArgument @(Int /\ Number) @(Number /\ Int)
+
+-- This test accounts for type applications nested within other AST nodes.
+otherNestingWorks :: Array (Maybe (Int /\ Number))
+otherNestingWorks = [Just @(Int /\ Number) (0 /\ 0.0), Just @(Int /\ Number) (1 /\ 1.0)]
+
+type InSynonym = Int /\ Number
+
+-- This test accounts for type synonyms used as type arguments.
+-- Since expansion happens during checking, InSynonym would expand
+-- to an already-desugared type operator. This test exists for the
+-- sake of redundancy.
+inSynonym :: InSynonym -> Unit
+inSynonym = singleArgument @InSynonym
+
+-- This test accounts for type operators used as type arguments directly.
+operatorAsArgument :: Proxy (/\)
+operatorAsArgument = Proxy @(/\)
+
+main :: Effect Unit
+main = log "Done"
diff --git a/tests/purs/publish/basic-example/output/Control.Applicative/docs.json b/tests/purs/publish/basic-example/output/Control.Applicative/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Control.Applicative/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[36,3]},"title":"pure"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[39,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[38,1]},"title":"applicativeFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[42,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[41,1]},"title":"applicativeArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[45,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[44,1]},"title":"applicativeProxy"}],"comments":"The `Applicative` type class extends the [`Apply`](#apply) type class\nwith a `pure` function, which can be used to create values of type `f a`\nfrom values of type `a`.\n\nWhere [`Apply`](#apply) provides the ability to lift functions of two or\nmore arguments to functions whose arguments are wrapped using `f`, and\n[`Functor`](#functor) provides the ability to lift functions of one\nargument, `pure` can be seen as the function which lifts functions of\n_zero_ arguments. That is, `Applicative` functors support a lifting\noperation for any number of function arguments.\n\nInstances must satisfy the following laws in addition to the `Apply`\nlaws:\n\n- Identity: `(pure identity) <*> v = v`\n- Composition: `pure (<<<) <*> f <*> g <*> h = f <*> (g <*> h)`\n- Homomorphism: `(pure f) <*> (pure x) = pure (f x)`\n- Interchange: `u <*> (pure y) = (pure (_ $ y)) <*> u`\n","info":{"arguments":[["f",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[35,1]},"title":"Applicative"},{"children":[],"comments":"`liftA1` provides a default implementation of `(<$>)` for any\n[`Applicative`](#applicative) functor, without using `(<$>)` as provided\nby the [`Functor`](#functor)-[`Applicative`](#applicative) superclass\nrelationship.\n\n`liftA1` can therefore be used to write [`Functor`](#functor) instances\nas follows:\n\n```purescript\ninstance functorF :: Functor F where\n  map = liftA1\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[59,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[59,1]},"title":"liftA1"},{"children":[],"comments":"Perform an applicative action unless a condition is true.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[68,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[68,1]},"title":"unless"},{"children":[],"comments":"Perform an applicative action when a condition is true.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[63,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","start":[63,1]},"title":"when"}],"name":"Control.Applicative","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Control.Apply/docs.json b/tests/purs/publish/basic-example/output/Control.Apply/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Control.Apply/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[53,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[53,3]},"title":"apply"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[58,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[57,1]},"title":"applyFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[61,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[60,1]},"title":"applyArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[66,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[65,1]},"title":"applyProxy"}],"comments":"The `Apply` class provides the `(<*>)` which is used to apply a function\nto an argument under a type constructor.\n\n`Apply` can be used to lift functions of two or more arguments to work on\nvalues wrapped with the type constructor `f`. It might also be understood\nin terms of the `lift2` function:\n\n```purescript\nlift2 :: forall f a b c. Apply f => (a -> b -> c) -> f a -> f b -> f c\nlift2 f a b = f <$> a <*> b\n```\n\n`(<*>)` is recovered from `lift2` as `lift2 ($)`. That is, `(<*>)` lifts\nthe function application operator `($)` to arguments wrapped with the\ntype constructor `f`.\n\nPut differently...\n```\nfoo =\n  functionTakingNArguments <$> computationProducingArg1\n                           <*> computationProducingArg2\n                           <*> ...\n                           <*> computationProducingArgN\n```\n\nInstances must satisfy the following law in addition to the `Functor`\nlaws:\n\n- Associative composition: `(<<<) <$> f <*> g <*> h = f <*> (g <*> h)`\n\nFormally, `Apply` represents a strong lax semi-monoidal endofunctor.\n","info":{"arguments":[["f",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Functor"],"Functor"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[53,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[52,1]},"title":"Apply"},{"children":[],"comments":null,"info":{"alias":[["Control","Apply"],{"Right":{"Left":{"Ident":"apply"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[55,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[55,1]},"title":"(<*>)"},{"children":[],"comments":"Combine two effectful actions, keeping only the result of the first.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[69,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[69,1]},"title":"applyFirst"},{"children":[],"comments":null,"info":{"alias":[["Control","Apply"],{"Right":{"Left":{"Ident":"applyFirst"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[72,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[72,1]},"title":"(<*)"},{"children":[],"comments":"Combine two effectful actions, keeping only the result of the second.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[75,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[75,1]},"title":"applySecond"},{"children":[],"comments":null,"info":{"alias":[["Control","Apply"],{"Right":{"Left":{"Ident":"applySecond"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[78,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[78,1]},"title":"(*>)"},{"children":[],"comments":"Lift a function of two arguments to a function which accepts and returns\nvalues wrapped with the type constructor `f`.\n\n```purescript\nlift2 add (Just 1) (Just 2) == Just 3\nlift2 add Nothing (Just 2) == Nothing\n```\n\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[88,71],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[88,1]},"title":"lift2"},{"children":[],"comments":"Lift a function of three arguments to a function which accepts and returns\nvalues wrapped with the type constructor `f`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[93,85],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[93,1]},"title":"lift3"},{"children":[],"comments":"Lift a function of four arguments to a function which accepts and returns\nvalues wrapped with the type constructor `f`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[98,99],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[98,1]},"title":"lift4"},{"children":[],"comments":"Lift a function of five arguments to a function which accepts and returns\nvalues wrapped with the type constructor `f`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[103,113],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","start":[103,1]},"title":"lift5"}],"name":"Control.Apply","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Control.Bind/docs.json b/tests/purs/publish/basic-example/output/Control.Bind/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Control.Bind/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[57,3]},"title":"bind"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[72,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[71,1]},"title":"bindFn"},{"comments":"The `bind`/`>>=` function for `Array` works by applying a function to\neach element in the array, and flattening the results into a single,\nnew array.\n\nArray's `bind`/`>>=` works like a nested for loop. Each `bind` adds\nanother level of nesting in the loop. For example:\n```\nfoo :: Array String\nfoo =\n  [\"a\", \"b\"] >>= \\eachElementInArray1 ->\n    [\"c\", \"d\"] >>= \\eachElementInArray2\n      pure (eachElementInArray1 <> eachElementInArray2)\n\n-- In other words...\nfoo\n-- ... is the same as...\n[ (\"a\" <> \"c\"), (\"a\" <> \"d\"), (\"b\" <> \"c\"), (\"b\" <> \"d\") ]\n-- which simplifies to...\n[ \"ac\", \"ad\", \"bc\", \"bd\" ]\n```\n","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[95,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[94,1]},"title":"bindArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[100,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[99,1]},"title":"bindProxy"}],"comments":"The `Bind` type class extends the [`Apply`](#apply) type class with a\n\"bind\" operation `(>>=)` which composes computations in sequence, using\nthe return value of one computation to determine the next computation.\n\nThe `>>=` operator can also be expressed using `do` notation, as follows:\n\n```purescript\nx >>= f = do y <- x\n             f y\n```\n\nwhere the function argument of `f` is given the name `y`.\n\nInstances must satisfy the following laws in addition to the `Apply`\nlaws:\n\n- Associativity: `(x >>= f) >>= g = x >>= (\\k -> f k >>= g)`\n- Apply Superclass: `apply f x = f >>= \\f’ -> map f’ x`\n\nAssociativity tells us that we can regroup operations which use `do`\nnotation so that we can unambiguously write, for example:\n\n```purescript\ndo x <- m1\n   y <- m2 x\n   m3 x y\n```\n","info":{"arguments":[["m",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Apply"],"Apply"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[56,1]},"title":"Bind"},{"children":[],"comments":null,"info":{"alias":[["Control","Bind"],{"Right":{"Left":{"Ident":"bind"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":1}},"kind":null,"sourceSpan":{"end":[59,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[59,1]},"title":"(>>=)"},{"children":[],"comments":"`bindFlipped` is `bind` with its arguments reversed. For example:\n\n```purescript\nprint =<< random\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Bind"],"Bind"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[66,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[66,1]},"title":"bindFlipped"},{"children":[],"comments":null,"info":{"alias":[["Control","Bind"],{"Right":{"Left":{"Ident":"bindFlipped"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":1}},"kind":null,"sourceSpan":{"end":[69,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[69,1]},"title":"(=<<)"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Control","Bind"],"Bind"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[108,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[108,3]},"title":"discard"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Discard"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[111,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[110,1]},"title":"discardUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Discard"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[114,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[113,1]},"title":"discardProxy"}],"comments":"A class for types whose values can safely be discarded\nin a `do` notation block.\n\nAn example is the `Unit` type, since there is only one\npossible value which can be returned.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[108,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[107,1]},"title":"Discard"},{"children":[],"comments":"Collapse two applications of a monadic type constructor into one.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Bind"],"Bind"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[117,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[117,1]},"title":"join"},{"children":[],"comments":"Forwards Kleisli composition.\n\nFor example:\n\n```purescript\nimport Data.Array (head, tail)\n\nthird = tail >=> tail >=> head\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Bind"],"Bind"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[129,81],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[129,1]},"title":"composeKleisli"},{"children":[],"comments":null,"info":{"alias":[["Control","Bind"],{"Right":{"Left":{"Ident":"composeKleisli"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":1}},"kind":null,"sourceSpan":{"end":[132,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[132,1]},"title":"(>=>)"},{"children":[],"comments":"Backwards Kleisli composition.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Bind"],"Bind"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[135,88],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[135,1]},"title":"composeKleisliFlipped"},{"children":[],"comments":null,"info":{"alias":[["Control","Bind"],{"Right":{"Left":{"Ident":"composeKleisliFlipped"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":1}},"kind":null,"sourceSpan":{"end":[138,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[138,1]},"title":"(<=<)"},{"children":[],"comments":"Execute a monadic action if a condition holds.\n\nFor example:\n\n```purescript\nmain = ifM ((< 0.5) <$> random)\n         (trace \"Heads\")\n         (trace \"Tails\")\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Bind"],"Bind"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[149,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","start":[149,1]},"title":"ifM"}],"name":"Control.Bind","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Control.Category/docs.json b/tests/purs/publish/basic-example/output/Control.Category/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Control.Category/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[19,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","start":[19,3]},"title":"identity"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Category"],"Category"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[22,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","start":[21,1]},"title":"categoryFn"}],"comments":"`Category`s consist of objects and composable morphisms between them, and\nas such are [`Semigroupoids`](#semigroupoid), but unlike `semigroupoids`\nmust have an identity element.\n\nInstances must satisfy the following law in addition to the\n`Semigroupoid` law:\n\n- Identity: `identity <<< p = p <<< identity = p`\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Control","Semigroupoid"],"Semigroupoid"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[19,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","start":[18,1]},"title":"Category"}],"name":"Control.Category","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Control.Monad/docs.json b/tests/purs/publish/basic-example/output/Control.Monad/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Control.Monad/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[33,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[33,1]},"title":"monadFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[35,1]},"title":"monadArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[37,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[37,1]},"title":"monadProxy"}],"comments":"The `Monad` type class combines the operations of the `Bind` and\n`Applicative` type classes. Therefore, `Monad` instances represent type\nconstructors which support sequential composition, and also lifting of\nfunctions of arbitrary arity.\n\nInstances must satisfy the following laws in addition to the\n`Applicative` and `Bind` laws:\n\n- Left Identity: `pure x >>= f = f x`\n- Right Identity: `x >>= pure = x`\n","info":{"arguments":[["m",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Bind"],"Bind"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[31,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[31,1]},"title":"Monad"},{"children":[],"comments":"`liftM1` provides a default implementation of `(<$>)` for any\n[`Monad`](#monad), without using `(<$>)` as provided by the\n[`Functor`](#functor)-[`Monad`](#monad) superclass relationship.\n\n`liftM1` can therefore be used to write [`Functor`](#functor) instances\nas follows:\n\n```purescript\ninstance functorF :: Functor F where\n  map = liftM1\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Monad"],"Monad"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[50,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[50,1]},"title":"liftM1"},{"children":[],"comments":"Perform a monadic action when a condition is true, where the conditional\nvalue is also in a monadic context.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Monad"],"Monad"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[57,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[57,1]},"title":"whenM"},{"children":[],"comments":"Perform a monadic action unless a condition is true, where the conditional\nvalue is also in a monadic context.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Monad"],"Monad"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[64,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[64,1]},"title":"unlessM"},{"children":[],"comments":"`ap` provides a default implementation of `(<*>)` for any `Monad`, without\nusing `(<*>)` as provided by the `Apply`-`Monad` superclass relationship.\n\n`ap` can therefore be used to write `Apply` instances as follows:\n\n```purescript\ninstance applyF :: Apply F where\n  apply = ap\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Monad"],"Monad"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[82,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","start":[82,1]},"title":"ap"}],"name":"Control.Monad","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Control.Semigroupoid/docs.json b/tests/purs/publish/basic-example/output/Control.Semigroupoid/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Control.Semigroupoid/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[14,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","start":[14,3]},"title":"compose"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Semigroupoid"],"Semigroupoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","start":[16,1]},"title":"semigroupoidFn"}],"comments":"A `Semigroupoid` is similar to a [`Category`](#category) but does not\nrequire an identity element `identity`, just composable morphisms.\n\n`Semigroupoid`s must satisfy the following law:\n\n- Associativity: `p <<< (q <<< r) = (p <<< q) <<< r`\n\nOne example of a `Semigroupoid` is the function type constructor `(->)`,\nwith `(<<<)` defined as function composition.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[14,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","start":[13,1]},"title":"Semigroupoid"},{"children":[],"comments":null,"info":{"alias":[["Control","Semigroupoid"],{"Right":{"Left":{"Ident":"compose"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":9}},"kind":null,"sourceSpan":{"end":[19,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","start":[19,1]},"title":"(<<<)"},{"children":[],"comments":"Forwards composition, or `compose` with its arguments reversed.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Control","Semigroupoid"],"Semigroupoid"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[22,76],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","start":[22,1]},"title":"composeFlipped"},{"children":[],"comments":null,"info":{"alias":[["Control","Semigroupoid"],{"Right":{"Left":{"Ident":"composeFlipped"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":9}},"kind":null,"sourceSpan":{"end":[25,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","start":[25,1]},"title":"(>>>)"}],"name":"Control.Semigroupoid","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Boolean/docs.json b/tests/purs/publish/basic-example/output/Data.Boolean/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Boolean/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"An alias for `true`, which can be useful in guard clauses:\n\n```purescript\nmax x y | x >= y    = x\n        | otherwise = y\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[9,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Boolean.purs","start":[9,1]},"title":"otherwise"}],"name":"Data.Boolean","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.BooleanAlgebra/docs.json b/tests/purs/publish/basic-example/output/Data.BooleanAlgebra/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.BooleanAlgebra/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[24,1]},"title":"booleanAlgebraBoolean"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[25,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[25,1]},"title":"booleanAlgebraUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[26,73],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[26,1]},"title":"booleanAlgebraFn"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,123],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[27,1]},"title":"booleanAlgebraRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[28,1]},"title":"booleanAlgebraProxy"}],"comments":"The `BooleanAlgebra` type class represents types that behave like boolean\nvalues.\n\nInstances should satisfy the following laws in addition to the\n`HeytingAlgebra` law:\n\n- Excluded middle:\n  - `a || not a = tt`\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[22,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[22,1]},"title":"BooleanAlgebra"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[35,1]},"title":"booleanAlgebraRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[43,66],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[37,1]},"title":"booleanAlgebraRecordCons"}],"comments":"A class for records where all fields have `BooleanAlgebra` instances, used\nto implement the `BooleanAlgebra` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["subrow"]]],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlist","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebraRecord"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[33,109],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","start":[33,1]},"title":"BooleanAlgebraRecord"}],"name":"Data.BooleanAlgebra","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Bounded.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Bounded.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Bounded.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[15,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[15,3]},"title":"genericBottom'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericBottom"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[18,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[17,1]},"title":"genericBottomNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericBottom"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[20,1]},"title":"genericBottomArgument"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericBottom"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericBottom"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Sum"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[23,1]},"title":"genericBottomSum"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericBottom"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericBottom"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericBottom"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[26,1]},"title":"genericBottomProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericBottom"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericBottom"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[29,1]},"title":"genericBottomConstructor"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[15,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[14,1]},"title":"GenericBottom"},{"children":[],"comments":"A `Generic` implementation of the `bottom` member from the `Bounded` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericBottom"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[51,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[51,1]},"title":"genericBottom"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[33,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[33,3]},"title":"genericTop'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericTop"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[35,1]},"title":"genericTopNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericTop"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[39,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[38,1]},"title":"genericTopArgument"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericTop"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericTop"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Sum"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[42,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[41,1]},"title":"genericTopSum"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericTop"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericTop"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericTop"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[45,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[44,1]},"title":"genericTopProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericTop"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded","Generic"],"GenericTop"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[48,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[47,1]},"title":"genericTopConstructor"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[33,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[32,1]},"title":"GenericTop"},{"children":[],"comments":"A `Generic` implementation of the `top` member from the `Bounded` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Bounded","Generic"],"GenericTop"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[55,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs","start":[55,1]},"title":"genericTop"}],"name":"Data.Bounded.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Bounded/docs.json b/tests/purs/publish/basic-example/output/Data.Bounded/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Bounded/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[26,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[26,3]},"title":"top"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[27,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[27,3]},"title":"bottom"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[31,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[29,1]},"title":"boundedBoolean"},{"comments":"The `Bounded` `Int` instance has `top :: Int` equal to 2^31 - 1,\nand `bottom :: Int` equal to -2^31, since these are the largest and smallest\nintegers representable by twos-complement 32-bit integers, respectively.\n","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[38,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[36,1]},"title":"boundedInt"},{"comments":"Characters fall within the Unicode range.\n","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Char"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[46,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[44,1]},"title":"boundedChar"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[53,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[51,1]},"title":"boundedOrdering"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[57,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[55,1]},"title":"boundedUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[64,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[62,1]},"title":"boundedNumber"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[68,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[66,1]},"title":"boundedProxy"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"BoundedRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[105,67],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[99,1]},"title":"boundedRecord"}],"comments":"The `Bounded` type class represents totally ordered types that have an\nupper and lower boundary.\n\nInstances should satisfy the following law in addition to the `Ord` laws:\n\n- Bounded: `bottom <= a <= top`\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[27,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[25,1]},"title":"Bounded"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[72,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[72,3]},"title":"topRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[73,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[73,3]},"title":"bottomRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"BoundedRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[77,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[75,1]},"title":"boundedRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"rowTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"BoundedRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"BoundedRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[97,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[79,1]},"title":"boundedRecordCons"}],"comments":null,"info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["subrow"]]],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlist","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"OrdRecord"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[73,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","start":[71,1]},"title":"BoundedRecord"}],"name":"Data.Bounded","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.CommutativeRing/docs.json b/tests/purs/publish/basic-example/output/Data.CommutativeRing/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.CommutativeRing/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[25,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[25,1]},"title":"commutativeRingInt"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[26,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[26,1]},"title":"commutativeRingNumber"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[27,1]},"title":"commutativeRingUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","CommutativeRing"],"CommutativeRing"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,76],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[28,1]},"title":"commutativeRingFn"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","CommutativeRing"],"CommutativeRingRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[29,126],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[29,1]},"title":"commutativeRingRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[30,1]},"title":"commutativeRingProxy"}],"comments":"The `CommutativeRing` class is for rings where multiplication is\ncommutative.\n\nInstances must satisfy the following law in addition to the `Ring`\nlaws:\n\n- Commutative multiplication: `a * b = b * a`\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[23,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[23,1]},"title":"CommutativeRing"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRingRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,73],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[36,1]},"title":"commutativeRingRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","CommutativeRing"],"CommutativeRingRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","CommutativeRing"],"CommutativeRing"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","CommutativeRing"],"CommutativeRingRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,67],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[38,1]},"title":"commutativeRingRecordCons"}],"comments":"A class for records where all fields have `CommutativeRing` instances, used\nto implement the `CommutativeRing` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["subrow"]]],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlist","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"RingRecord"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[34,100],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","start":[34,1]},"title":"CommutativeRingRecord"}],"name":"Data.CommutativeRing","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.DivisionRing/docs.json b/tests/purs/publish/basic-example/output/Data.DivisionRing/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.DivisionRing/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","start":[30,3]},"title":"recip"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","DivisionRing"],"DivisionRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[55,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","start":[54,1]},"title":"divisionringNumber"}],"comments":"The `DivisionRing` class is for non-zero rings in which every non-zero\nelement has a multiplicative inverse. Division rings are sometimes also\ncalled *skew fields*.\n\nInstances must satisfy the following laws in addition to the `Ring` laws:\n\n- Non-zero ring: `one /= zero`\n- Non-zero multiplicative inverse: `recip a * a = a * recip a = one` for\n  all non-zero `a`\n\nThe result of `recip zero` is left undefined; individual instances may\nchoose how to handle this case.\n\nIf a type has both `DivisionRing` and `CommutativeRing` instances, then\nit is a field and should have a `Field` instance.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[30,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","start":[29,1]},"title":"DivisionRing"},{"children":[],"comments":"Left division, defined as `leftDiv a b = recip b * a`. Left and right\ndivision are distinct in this module because a `DivisionRing` is not\nnecessarily commutative.\n\nIf the type `a` is also a `EuclideanRing`, then this function is\nequivalent to `div` from the `EuclideanRing` class. When working\nabstractly, `div` should generally be preferred, unless you know that you\nneed your code to work with noncommutative rings.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[40,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","start":[40,1]},"title":"leftDiv"},{"children":[],"comments":"Right division, defined as `rightDiv a b = a * recip b`. Left and right\ndivision are distinct in this module because a `DivisionRing` is not\nnecessarily commutative.\n\nIf the type `a` is also a `EuclideanRing`, then this function is\nequivalent to `div` from the `EuclideanRing` class. When working\nabstractly, `div` should generally be preferred, unless you know that you\nneed your code to work with noncommutative rings.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[51,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","start":[51,1]},"title":"rightDiv"}],"name":"Data.DivisionRing","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Eq.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Eq.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Eq.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[11,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[11,3]},"title":"genericEq'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq","Generic"],"GenericEq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoConstructors"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[14,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[13,1]},"title":"genericEqNoConstructors"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq","Generic"],"GenericEq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[16,1]},"title":"genericEqNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq","Generic"],"GenericEq"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Eq","Generic"],"GenericEq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq","Generic"],"GenericEq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Sum"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[22,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[19,1]},"title":"genericEqSum"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq","Generic"],"GenericEq"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Eq","Generic"],"GenericEq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq","Generic"],"GenericEq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[25,84],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[24,1]},"title":"genericEqProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq","Generic"],"GenericEq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq","Generic"],"GenericEq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,66],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[27,1]},"title":"genericEqConstructor"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq","Generic"],"GenericEq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[31,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[30,1]},"title":"genericEqArgument"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[11,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[10,1]},"title":"GenericEq"},{"children":[],"comments":"A `Generic` implementation of the `eq` member from the `Eq` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Eq","Generic"],"GenericEq"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[34,79],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs","start":[34,1]},"title":"genericEq"}],"name":"Data.Eq.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Eq/docs.json b/tests/purs/publish/basic-example/output/Data.Eq/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Eq/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[36,3]},"title":"eq"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[48,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[47,1]},"title":"eqBoolean"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[51,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[50,1]},"title":"eqInt"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[54,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[53,1]},"title":"eqNumber"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Char"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[57,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[56,1]},"title":"eqChar"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[60,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[59,1]},"title":"eqString"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[63,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[62,1]},"title":"eqUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Void"],"Void"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[66,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[65,1]},"title":"eqVoid"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[69,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[68,1]},"title":"eqArray"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"EqRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[72,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[71,1]},"title":"eqRec"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[75,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[74,1]},"title":"eqProxy"}],"comments":"The `Eq` type class represents types which support decidable equality.\n\n`Eq` instances should satisfy the following laws:\n\n- Reflexivity: `x == x = true`\n- Symmetry: `x == y = y == x`\n- Transitivity: if `x == y` and `y == z` then `x == z`\n\n**Note:** The `Number` type is not an entirely law abiding member of this\nclass due to the presence of `NaN`, since `NaN /= NaN`. Additionally,\ncomputing with `Number` can result in a loss of precision, so sometimes\nvalues that should be equivalent are not.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[36,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[35,1]},"title":"Eq"},{"children":[],"comments":null,"info":{"alias":[["Data","Eq"],{"Right":{"Left":{"Ident":"eq"}}}],"declType":"alias","fixity":{"associativity":"infix","precedence":4}},"kind":null,"sourceSpan":{"end":[38,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[38,1]},"title":"(==)"},{"children":[],"comments":"`notEq` tests whether one value is _not equal_ to another. Shorthand for\n`not (eq x y)`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[42,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[42,1]},"title":"notEq"},{"children":[],"comments":null,"info":{"alias":[["Data","Eq"],{"Right":{"Left":{"Ident":"notEq"}}}],"declType":"alias","fixity":{"associativity":"infix","precedence":4}},"kind":null,"sourceSpan":{"end":[45,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[45,1]},"title":"(/=)"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[87,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[87,3]},"title":"eq1"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[90,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[89,1]},"title":"eq1Array"}],"comments":"The `Eq1` type class represents type constructors with decidable equality.\n","info":{"arguments":[["f",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[87,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[86,1]},"title":"Eq1"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq1"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[92,61],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[92,1]},"title":"notEq1"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[99,67],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[99,3]},"title":"eqRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"EqRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[102,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[101,1]},"title":"eqRowNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"EqRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"rowTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"EqRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[115,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[104,1]},"title":"eqRowCons"}],"comments":"A class for records where all fields have `Eq` instances, used to implement\nthe `Eq` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[99,67],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","start":[98,1]},"title":"EqRecord"}],"name":"Data.Eq","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.EuclideanRing/docs.json b/tests/purs/publish/basic-example/output/Data.EuclideanRing/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.EuclideanRing/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[68,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[68,3]},"title":"degree"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[69,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[69,3]},"title":"div"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[70,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[70,3]},"title":"mod"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","EuclideanRing"],"EuclideanRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[77,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[74,1]},"title":"euclideanRingInt"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","EuclideanRing"],"EuclideanRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[82,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[79,1]},"title":"euclideanRingNumber"}],"comments":"The `EuclideanRing` class is for commutative rings that support division.\nThe mathematical structure this class is based on is sometimes also called\na *Euclidean domain*.\n\nInstances must satisfy the following laws in addition to the `Ring`\nlaws:\n\n- Integral domain: `one /= zero`, and if `a` and `b` are both nonzero then\n  so is their product `a * b`\n- Euclidean function `degree`:\n  - Nonnegativity: For all nonzero `a`, `degree a >= 0`\n  - Quotient/remainder: For all `a` and `b`, where `b` is nonzero,\n    let `q = a / b` and ``r = a `mod` b``; then `a = q*b + r`, and also\n    either `r = zero` or `degree r < degree b`\n- Submultiplicative euclidean function:\n  - For all nonzero `a` and `b`, `degree a <= degree (a * b)`\n\nThe behaviour of division by `zero` is unconstrained by these laws,\nmeaning that individual instances are free to choose how to behave in this\ncase. Similarly, there are no restrictions on what the result of\n`degree zero` is; it doesn't make sense to ask for `degree zero` in the\nsame way that it doesn't make sense to divide by `zero`, so again,\nindividual instances may choose how to handle this case.\n\nFor any `EuclideanRing` which is also a `Field`, one valid choice\nfor `degree` is simply `const 1`. In fact, unless there's a specific\nreason not to, `Field` types should normally use this definition of\n`degree`.\n\nThe `EuclideanRing Int` instance is one of the most commonly used\n`EuclideanRing` instances and deserves a little more discussion. In\nparticular, there are a few different sensible law-abiding implementations\nto choose from, with slightly different behaviour in the presence of\nnegative dividends or divisors. The most common definitions are \"truncating\"\ndivision, where the result of `a / b` is rounded towards 0, and \"Knuthian\"\nor \"flooring\" division, where the result of `a / b` is rounded towards\nnegative infinity. A slightly less common, but arguably more useful, option\nis \"Euclidean\" division, which is defined so as to ensure that ``a `mod` b``\nis always nonnegative. With Euclidean division, `a / b` rounds towards\nnegative infinity if the divisor is positive, and towards positive infinity\nif the divisor is negative. Note that all three definitions are identical if\nwe restrict our attention to nonnegative dividends and divisors.\n\nIn versions 1.x, 2.x, and 3.x of the Prelude, the `EuclideanRing Int`\ninstance used truncating division. As of 4.x, the `EuclideanRing Int`\ninstance uses Euclidean division. Additional functions `quot` and `rem` are\nsupplied if truncating division is desired.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","CommutativeRing"],"CommutativeRing"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[70,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[67,1]},"title":"EuclideanRing"},{"children":[],"comments":null,"info":{"alias":[["Data","EuclideanRing"],{"Right":{"Left":{"Ident":"div"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":7}},"kind":null,"sourceSpan":{"end":[72,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[72,1]},"title":"(/)"},{"children":[],"comments":"The *greatest common divisor* of two values.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[91,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[91,1]},"title":"gcd"},{"children":[],"comments":"The *least common multiple* of two values.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[97,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","start":[97,1]},"title":"lcm"}],"name":"Data.EuclideanRing","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Field/docs.json b/tests/purs/publish/basic-example/output/Data.Field/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Field/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Field"],"Field"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[41,63],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","start":[41,1]},"title":"field"}],"comments":"The `Field` class is for types that are (commutative) fields.\n\nMathematically, a field is a ring which is commutative and in which every\nnonzero element has a multiplicative inverse; these conditions correspond\nto the `CommutativeRing` and `DivisionRing` classes in PureScript\nrespectively. However, the `Field` class has `EuclideanRing` and\n`DivisionRing` as superclasses, which seems like a stronger requirement\n(since `CommutativeRing` is a superclass of `EuclideanRing`). In fact, it\nis not stronger, since any type which has law-abiding `CommutativeRing`\nand `DivisionRing` instances permits exactly one law-abiding\n`EuclideanRing` instance. We use a `EuclideanRing` superclass here in\norder to ensure that a `Field` constraint on a function permits you to use\n`div` on that type, since `div` is a member of `EuclideanRing`.\n\nThis class has no laws or members of its own; it exists as a convenience,\nso a single constraint can be used when field-like behaviour is expected.\n\nThis module also defines a single `Field` instance for any type which has\nboth `EuclideanRing` and `DivisionRing` instances. Any other instance\nwould overlap with this instance, so no other `Field` instances should be\ndefined in libraries. Instead, simply define `EuclideanRing` and\n`DivisionRing` instances, and this will permit your type to be used with a\n`Field` constraint.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[39,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","start":[39,1]},"title":"Field"}],"name":"Data.Field","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Function/docs.json b/tests/purs/publish/basic-example/output/Data.Function/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Function/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"Given a function that takes two arguments, applies the arguments\nto the function in a swapped order.\n\n```purescript\nflip append \"1\" \"2\" == append \"2\" \"1\" == \"21\"\n\nconst 1 \"two\" == 1\n\nflip const 1 \"two\" == const \"two\" 1 == \"two\"\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[28,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[28,1]},"title":"flip"},{"children":[],"comments":"Returns its first argument and ignores its second.\n\n```purescript\nconst 1 \"hello\" = 1\n```\n\nIt can also be thought of as creating a function that ignores its argument:\n\n```purescript\nconst 1 = \\_ -> 1\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[42,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[42,1]},"title":"const"},{"children":[],"comments":"Applies a function to an argument. This is primarily used as the operator\n`($)` which allows parentheses to be omitted in some cases, or as a\nnatural way to apply a chain of composed functions to a value.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[48,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[48,1]},"title":"apply"},{"children":[],"comments":"Applies a function to an argument: the reverse of `(#)`.\n\n```purescript\nlength $ groupBy productCategory $ filter isInStock $ products\n```\n\nis equivalent to:\n\n```purescript\nlength (groupBy productCategory (filter isInStock products))\n```\n\nOr another alternative equivalent, applying chain of composed functions to\na value:\n\n```purescript\nlength <<< groupBy productCategory <<< filter isInStock $ products\n```\n","info":{"alias":[["Data","Function"],{"Right":{"Left":{"Ident":"apply"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":0}},"kind":null,"sourceSpan":{"end":[69,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[69,1]},"title":"($)"},{"children":[],"comments":"Applies an argument to a function. This is primarily used as the `(#)`\noperator, which allows parentheses to be omitted in some cases, or as a\nnatural way to apply a value to a chain of composed functions.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[74,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[74,1]},"title":"applyFlipped"},{"children":[],"comments":"Applies an argument to a function: the reverse of `($)`.\n\n```purescript\nproducts # filter isInStock # groupBy productCategory # length\n```\n\nis equivalent to:\n\n```purescript\nlength (groupBy productCategory (filter isInStock products))\n```\n\nOr another alternative equivalent, applying a value to a chain of composed\nfunctions:\n\n```purescript\nproducts # filter isInStock >>> groupBy productCategory >>> length\n```\n","info":{"alias":[["Data","Function"],{"Right":{"Left":{"Ident":"applyFlipped"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":1}},"kind":null,"sourceSpan":{"end":[95,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[95,1]},"title":"(#)"},{"children":[],"comments":"`applyN f n` applies the function `f` to its argument `n` times.\n\nIf n is less than or equal to 0, the function is not applied.\n\n```purescript\napplyN (_ + 1) 10 0 == 10\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[104,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[104,1]},"title":"applyN"},{"children":[],"comments":"The `on` function is used to change the domain of a binary operator.\n\nFor example, we can create a function which compares two records based on the values of their `x` properties:\n\n```purescript\ncompareX :: forall r. { x :: Number | r } -> { x :: Number | r } -> Ordering\ncompareX = compare `on` _.x\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[119,61],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","start":[119,1]},"title":"on"}],"name":"Data.Function","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Functor/docs.json b/tests/purs/publish/basic-example/output/Data.Functor/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Functor/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[32,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[32,3]},"title":"map"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[47,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[46,1]},"title":"functorFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[50,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[49,1]},"title":"functorArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[53,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[52,1]},"title":"functorProxy"}],"comments":"A `Functor` is a type constructor which supports a mapping operation\n`map`.\n\n`map` can be used to turn functions `a -> b` into functions\n`f a -> f b` whose argument and return types use the type constructor `f`\nto represent some computational context.\n\nInstances must satisfy the following laws:\n\n- Identity: `map identity = identity`\n- Composition: `map (f <<< g) = map f <<< map g`\n","info":{"arguments":[["f",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[32,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[31,1]},"title":"Functor"},{"children":[],"comments":null,"info":{"alias":[["Data","Functor"],{"Right":{"Left":{"Ident":"map"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[34,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[34,1]},"title":"(<$>)"},{"children":[],"comments":"`mapFlipped` is `map` with its arguments reversed. For example:\n\n```purescript\n[1, 2, 3] <#> \\n -> n * n\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Functor"],"Functor"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[41,64],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[41,1]},"title":"mapFlipped"},{"children":[],"comments":null,"info":{"alias":[["Data","Functor"],{"Right":{"Left":{"Ident":"mapFlipped"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":1}},"kind":null,"sourceSpan":{"end":[44,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[44,1]},"title":"(<#>)"},{"children":[],"comments":"The `void` function is used to ignore the type wrapped by a\n[`Functor`](#functor), replacing it with `Unit` and keeping only the type\ninformation provided by the type constructor itself.\n\n`void` is often useful when using `do` notation to change the return type\nof a monadic computation:\n\n```purescript\nmain = forE 1 10 \\n -> void do\n  print n\n  print (n * n)\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Functor"],"Functor"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[69,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[69,1]},"title":"void"},{"children":[],"comments":"Ignore the return value of a computation, using the specified return value\ninstead.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Functor"],"Functor"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[74,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[74,1]},"title":"voidRight"},{"children":[],"comments":null,"info":{"alias":[["Data","Functor"],{"Right":{"Left":{"Ident":"voidRight"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[77,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[77,1]},"title":"(<$)"},{"children":[],"comments":"A version of `voidRight` with its arguments flipped.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Functor"],"Functor"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[80,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[80,1]},"title":"voidLeft"},{"children":[],"comments":null,"info":{"alias":[["Data","Functor"],{"Right":{"Left":{"Ident":"voidLeft"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[83,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[83,1]},"title":"($>)"},{"children":[],"comments":"Apply a value in a computational context to a value in no context.\n\nGeneralizes `flip`.\n\n```purescript\nlongEnough :: String -> Bool\nhasSymbol :: String -> Bool\nhasDigit :: String -> Bool\npassword :: String\n\nvalidate :: String -> Array Bool\nvalidate = flap [longEnough, hasSymbol, hasDigit]\n```\n\n```purescript\nflap (-) 3 4 == 1\nthreeve <$> Just 1 <@> 'a' <*> Just true == Just (threeve 1 'a' true)\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Functor"],"Functor"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[103,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[103,1]},"title":"flap"},{"children":[],"comments":null,"info":{"alias":[["Data","Functor"],{"Right":{"Left":{"Ident":"flap"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[106,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","start":[106,1]},"title":"(<@>)"}],"name":"Data.Functor","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Generic.Rep/docs.json b/tests/purs/publish/basic-example/output/Data.Generic.Rep/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Generic.Rep/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[58,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[58,3]},"title":"to"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[59,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[59,3]},"title":"from"}],"comments":"The `Generic` class asserts the existence of a type function from types\nto their representations using the type constructors defined in this module.\n","info":{"arguments":[["a",null],["rep",null]],"declType":"typeClass","fundeps":[[["a"],["rep"]]],"superclasses":[]},"kind":null,"sourceSpan":{"end":[59,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[57,1]},"title":"Generic"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[61,61],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[61,1]},"title":"repOf"},{"children":[],"comments":"A representation for types with no constructors.\n","info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[21,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[21,1]},"title":"NoConstructors"},{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[24,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[24,18]},"title":"NoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[26,1]},"title":"showNoArguments"}],"comments":"A representation for constructors with no arguments.\n","info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[24,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[24,1]},"title":"NoArguments"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[30,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[30,14]},"title":"Inl"},{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[30,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[30,22]},"title":"Inr"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Sum"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[34,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[32,1]},"title":"showSum"}],"comments":"A representation for types with multiple constructors.\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[30,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[30,1]},"title":"Sum"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[37,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[37,18]},"title":"Product"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[39,1]},"title":"showProduct"}],"comments":"A representation for constructors with multiple fields.\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["a",null],["b",null]]},"kind":null,"sourceSpan":{"end":[37,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[37,1]},"title":"Product"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[44,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[44,40]},"title":"Constructor"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"name","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[47,112],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[46,1]},"title":"showConstructor"}],"comments":"A representation for constructors which includes the data constructor name\nas a type-level string.\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Phantom","Representational"],"typeArguments":[["name",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["a",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[44,1]},"title":"Constructor"},{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[50,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[50,20]},"title":"Argument"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[53,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[52,1]},"title":"showArgument"}],"comments":"A representation for an argument in a data constructor.\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[50,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs","start":[50,1]},"title":"Argument"}],"name":"Data.Generic.Rep","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.HeytingAlgebra.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.HeytingAlgebra.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.HeytingAlgebra.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[9,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[9,3]},"title":"genericFF'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[10,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[10,3]},"title":"genericTT'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[11,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[11,3]},"title":"genericImplies'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[12,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[12,3]},"title":"genericConj'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[13,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[13,3]},"title":"genericDisj'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[14,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[14,3]},"title":"genericNot'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[22,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[16,1]},"title":"genericHeytingAlgebraNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[24,1]},"title":"genericHeytingAlgebraArgument"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[38,70],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[32,1]},"title":"genericHeytingAlgebraProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[46,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[40,1]},"title":"genericHeytingAlgebraConstructor"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[14,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[8,1]},"title":"GenericHeytingAlgebra"},{"children":[],"comments":"A `Generic` implementation of the `ff` member from the `HeytingAlgebra` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[49,75],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[49,1]},"title":"genericFF"},{"children":[],"comments":"A `Generic` implementation of the `tt` member from the `HeytingAlgebra` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[53,75],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[53,1]},"title":"genericTT"},{"children":[],"comments":"A `Generic` implementation of the `implies` member from the `HeytingAlgebra` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[57,90],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[57,1]},"title":"genericImplies"},{"children":[],"comments":"A `Generic` implementation of the `conj` member from the `HeytingAlgebra` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[61,87],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[61,1]},"title":"genericConj"},{"children":[],"comments":"A `Generic` implementation of the `disj` member from the `HeytingAlgebra` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[65,87],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[65,1]},"title":"genericDisj"},{"children":[],"comments":"A `Generic` implementation of the `not` member from the `HeytingAlgebra` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra","Generic"],"GenericHeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[69,81],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs","start":[69,1]},"title":"genericNot"}],"name":"Data.HeytingAlgebra.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.HeytingAlgebra/docs.json b/tests/purs/publish/basic-example/output/Data.HeytingAlgebra/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.HeytingAlgebra/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[53,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[53,3]},"title":"ff"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[54,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[54,3]},"title":"tt"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[55,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[55,3]},"title":"implies"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[56,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[56,3]},"title":"conj"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[57,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[57,3]},"title":"disj"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[58,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[58,3]},"title":"not"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[69,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[63,1]},"title":"heytingAlgebraBoolean"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[77,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[71,1]},"title":"heytingAlgebraUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[85,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[79,1]},"title":"heytingAlgebraFunction"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[93,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[87,1]},"title":"heytingAlgebraProxy"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebraRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[101,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[95,1]},"title":"heytingAlgebraRecord"}],"comments":"The `HeytingAlgebra` type class represents types that are bounded lattices with\nan implication operator such that the following laws hold:\n\n- Associativity:\n  - `a || (b || c) = (a || b) || c`\n  - `a && (b && c) = (a && b) && c`\n- Commutativity:\n  - `a || b = b || a`\n  - `a && b = b && a`\n- Absorption:\n  - `a || (a && b) = a`\n  - `a && (a || b) = a`\n- Idempotent:\n  - `a || a = a`\n  - `a && a = a`\n- Identity:\n  - `a || ff = a`\n  - `a && tt = a`\n- Implication:\n  - ``a `implies` a = tt``\n  - ``a && (a `implies` b) = a && b``\n  - ``b && (a `implies` b) = b``\n  - ``a `implies` (b && c) = (a `implies` b) && (a `implies` c)``\n- Complemented:\n  - ``not a = a `implies` ff``\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[58,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[52,1]},"title":"HeytingAlgebra"},{"children":[],"comments":null,"info":{"alias":[["Data","HeytingAlgebra"],{"Right":{"Left":{"Ident":"conj"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":3}},"kind":null,"sourceSpan":{"end":[60,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[60,1]},"title":"(&&)"},{"children":[],"comments":null,"info":{"alias":[["Data","HeytingAlgebra"],{"Right":{"Left":{"Ident":"disj"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":2}},"kind":null,"sourceSpan":{"end":[61,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[61,1]},"title":"(||)"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[111,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[111,3]},"title":"ffRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[112,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[112,3]},"title":"ttRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[113,78],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[113,3]},"title":"impliesRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[114,75],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[114,3]},"title":"disjRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[115,75],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[115,3]},"title":"conjRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[116,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[116,3]},"title":"notRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra"],"HeytingAlgebraRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[124,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[118,1]},"title":"heytingAlgebraRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebraRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","HeytingAlgebra"],"HeytingAlgebraRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[171,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[126,1]},"title":"heytingAlgebraRecordCons"}],"comments":"A class for records where all fields have `HeytingAlgebra` instances, used\nto implement the `HeytingAlgebra` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["subrow"]]],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[116,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","start":[110,1]},"title":"HeytingAlgebraRecord"}],"name":"Data.HeytingAlgebra","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid.Additive/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid.Additive/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid.Additive/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[14,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[14,20]},"title":"Additive"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[16,1]},"title":"eqAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[17,1]},"title":"eq1Additive"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[19,1]},"title":"ordAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[20,1]},"title":"ord1Additive"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[22,77],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[22,1]},"title":"boundedAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[25,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[24,1]},"title":"showAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[27,1]},"title":"functorAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[29,1]},"title":"applyAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[33,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[32,1]},"title":"applicativeAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[35,1]},"title":"bindAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[38,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[38,1]},"title":"monadAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[41,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[40,1]},"title":"semigroupAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[43,1]},"title":"monoidAdditive"}],"comments":"Monoid and semigroup for semirings under addition.\n\n``` purescript\nAdditive x <> Additive y == Additive (x + y)\n(mempty :: Additive _) == Additive zero\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[14,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs","start":[14,1]},"title":"Additive"}],"name":"Data.Monoid.Additive","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid.Conj/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid.Conj/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid.Conj/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[15,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[15,16]},"title":"Conj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[17,1]},"title":"eqConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[18,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[18,1]},"title":"eq1Conj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[20,1]},"title":"ordConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[21,1]},"title":"ord1Conj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[23,1]},"title":"boundedConj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[26,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[25,1]},"title":"showConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[28,1]},"title":"functorConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[31,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[30,1]},"title":"applyConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[34,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[33,1]},"title":"applicativeConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[37,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[36,1]},"title":"bindConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[39,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[39,1]},"title":"monadConj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[42,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[41,1]},"title":"semigroupConj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[45,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[44,1]},"title":"monoidConj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[51,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[47,1]},"title":"semiringConj"}],"comments":"Monoid and semigroup for conjunction.\n\n``` purescript\nConj x <> Conj y == Conj (x && y)\n(mempty :: Conj _) == Conj tt\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[15,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs","start":[15,1]},"title":"Conj"}],"name":"Data.Monoid.Conj","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid.Disj/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid.Disj/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid.Disj/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[15,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[15,16]},"title":"Disj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[17,1]},"title":"eqDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[18,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[18,1]},"title":"eq1Disj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[20,1]},"title":"ordDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[21,1]},"title":"ord1Disj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[23,1]},"title":"boundedDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[26,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[25,1]},"title":"showDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[28,1]},"title":"functorDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[31,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[30,1]},"title":"applyDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[34,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[33,1]},"title":"applicativeDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[37,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[36,1]},"title":"bindDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[39,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[39,1]},"title":"monadDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[42,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[41,1]},"title":"semigroupDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[45,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[44,1]},"title":"monoidDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[51,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[47,1]},"title":"semiringDisj"}],"comments":"Monoid and semigroup for disjunction.\n\n``` purescript\nDisj x <> Disj y == Disj (x || y)\n(mempty :: Disj _) == Disj bottom\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[15,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs","start":[15,1]},"title":"Disj"}],"name":"Data.Monoid.Disj","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid.Dual/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid.Dual/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid.Dual/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[14,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[14,16]},"title":"Dual"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[16,1]},"title":"eqDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[17,1]},"title":"eq1Dual"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[19,1]},"title":"ordDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[20,1]},"title":"ord1Dual"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[22,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[22,1]},"title":"boundedDual"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[25,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[24,1]},"title":"showDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[27,1]},"title":"functorDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[29,1]},"title":"applyDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[33,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[32,1]},"title":"applicativeDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[35,1]},"title":"bindDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[38,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[38,1]},"title":"monadDual"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[41,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[40,1]},"title":"semigroupDual"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[43,1]},"title":"monoidDual"}],"comments":"The dual of a monoid.\n\n``` purescript\nDual x <> Dual y == Dual (y <> x)\n(mempty :: Dual _) == Dual mempty\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[14,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs","start":[14,1]},"title":"Dual"}],"name":"Data.Monoid.Dual","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid.Endo/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid.Endo/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid.Endo/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"c","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"declType":"dataConstructor"},"sourceSpan":{"end":[15,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[15,18]},"title":"Endo"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"c","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Endo"],"Endo"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[17,1]},"title":"eqEndo"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"c","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Endo"],"Endo"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[19,1]},"title":"ordEndo"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"c","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Endo"],"Endo"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,77],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[21,1]},"title":"boundedEndo"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"c","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Endo"],"Endo"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[23,1]},"title":"showEndo"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"c","tag":"TypeVar"}],"constraintClass":[["Control","Semigroupoid"],"Semigroupoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Endo"],"Endo"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[26,1]},"title":"semigroupEndo"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"c","tag":"TypeVar"}],"constraintClass":[["Control","Category"],"Category"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Endo"],"Endo"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[29,1]},"title":"monoidEndo"}],"comments":"Monoid and semigroup for category endomorphisms.\n\nWhen `c` is instantiated with `->` this composes functions of type\n`a -> a`:\n\n``` purescript\nEndo f <> Endo g == Endo (f <<< g)\n(mempty :: Endo _) == Endo identity\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational","Nominal"],"typeArguments":[["c",null],["a",null]]},"kind":{"keyword":"newtype","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[15,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs","start":[15,1]},"title":"Endo"}],"name":"Data.Monoid.Endo","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[11,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs","start":[11,3]},"title":"genericMempty'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Generic"],"GenericMonoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[14,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs","start":[13,1]},"title":"genericMonoidNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Monoid","Generic"],"GenericMonoid"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Monoid","Generic"],"GenericMonoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Generic"],"GenericMonoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs","start":[16,1]},"title":"genericMonoidProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Monoid","Generic"],"GenericMonoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Generic"],"GenericMonoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs","start":[19,1]},"title":"genericMonoidConstructor"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Generic"],"GenericMonoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs","start":[22,1]},"title":"genericMonoidArgument"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[11,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs","start":[10,1]},"title":"GenericMonoid"},{"children":[],"comments":"A `Generic` implementation of the `mempty` member from the `Monoid` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Monoid","Generic"],"GenericMonoid"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[26,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs","start":[26,1]},"title":"genericMempty"}],"name":"Data.Monoid.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid.Multiplicative/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid.Multiplicative/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid.Multiplicative/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[14,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[14,26]},"title":"Multiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[16,1]},"title":"eqMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[17,1]},"title":"eq1Multiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,77],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[19,1]},"title":"ordMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[20,1]},"title":"ord1Multiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[22,89],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[22,1]},"title":"boundedMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[25,64],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[24,1]},"title":"showMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,64],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[27,1]},"title":"functorMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[29,1]},"title":"applyMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[33,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[32,1]},"title":"applicativeMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[35,1]},"title":"bindMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[38,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[38,1]},"title":"monadMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[41,72],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[40,1]},"title":"semigroupMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[44,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[43,1]},"title":"monoidMultiplicative"}],"comments":"Monoid and semigroup for semirings under multiplication.\n\n``` purescript\nMultiplicative x <> Multiplicative y == Multiplicative (x * y)\n(mempty :: Multiplicative _) == Multiplicative one\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[14,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs","start":[14,1]},"title":"Multiplicative"}],"name":"Data.Monoid.Multiplicative","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Monoid/docs.json b/tests/purs/publish/basic-example/output/Data.Monoid/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Monoid/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"m","tag":"TypeVar"}},"sourceSpan":{"end":[47,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[47,3]},"title":"mempty"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[50,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[49,1]},"title":"monoidUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[53,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[52,1]},"title":"monoidOrdering"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[56,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[55,1]},"title":"monoidFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[59,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[58,1]},"title":"monoidString"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[62,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[61,1]},"title":"monoidArray"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"MonoidRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[65,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[64,1]},"title":"monoidRecord"}],"comments":"A `Monoid` is a `Semigroup` with a value `mempty`, which is both a\nleft and right unit for the associative operation `<>`:\n\n- Left unit: `(mempty <> x) = x`\n- Right unit: `(x <> mempty) = x`\n\n`Monoid`s are commonly used as the result of fold operations, where\n`<>` is used to combine individual results, and `mempty` gives the result\nof folding an empty collection of elements.\n\n### Newtypes for Monoid\n\nSome types (e.g. `Int`, `Boolean`) can implement multiple law-abiding\ninstances for `Monoid`. Let's use `Int` as an example\n1. `<>` could be `+` and `mempty` could be `0`\n2. `<>` could be `*` and `mempty` could be `1`.\n\nTo clarify these ambiguous situations, one should use the newtypes\ndefined in `Data.Monoid.<NewtypeName>` modules.\n\nIn the above ambiguous situation, we could use `Additive`\nfor the first situation or `Multiplicative` for the second one.\n","info":{"arguments":[["m",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[47,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[46,1]},"title":"Monoid"},{"children":[],"comments":"Append a value to itself a certain number of times. For the\n`Multiplicative` type, and for a non-negative power, this is the same as\nnormal number exponentiation.\n\nIf the second argument is negative this function will return `mempty`\n(*unlike* normal number exponentiation). The `Monoid` constraint alone\nis not enough to write a `power` function with the property that `power x\nn` cancels with `power x (-n)`, i.e. `power x n <> power x (-n) = mempty`.\nFor that, we would additionally need the ability to invert elements, i.e.\na Group.\n\n```purescript\npower [1,2] 3    == [1,2,1,2,1,2]\npower [1,2] 1    == [1,2]\npower [1,2] 0    == []\npower [1,2] (-3) == []\n```\n\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"m","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"m","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[85,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[85,1]},"title":"power"},{"children":[],"comments":"Allow or \"truncate\" a Monoid to its `mempty` value based on a condition.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"m","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"m","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[96,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[96,1]},"title":"guard"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[104,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[104,3]},"title":"memptyRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"MonoidRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[107,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[106,1]},"title":"monoidRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"MonoidRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"MonoidRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[120,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[109,1]},"title":"monoidRecordCons"}],"comments":"A class for records where all fields have `Monoid` instances, used to\nimplement the `Monoid` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["row","subrow"]]],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlist","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"SemigroupRecord"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[104,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs","start":[103,1]},"title":"MonoidRecord"}],"name":"Data.Monoid","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.NaturalTransformation/docs.json b/tests/purs/publish/basic-example/output/Data.NaturalTransformation/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.NaturalTransformation/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"A type for natural transformations.\n\nA natural transformation is a mapping between type constructors of kind\n`k -> Type`, for any kind `k`, where the mapping operation has no ability\nto manipulate the inner values.\n\nAn example of this is the `fromFoldable` function provided in\n`purescript-lists`, where some foldable structure containing values of\ntype `a` is converted into a `List a`.\n\nThe definition of a natural transformation in category theory states that\n`f` and `g` should be functors, but the `Functor` constraint is not\nenforced here; that the types are of kind `k -> Type` is enough for our\npurposes.\n","info":{"arguments":[["f",null],["g",null]],"declType":"typeSynonym","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":{"keyword":"type","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[18,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/NaturalTransformation.purs","start":[18,1]},"title":"NaturalTransformation"},{"children":[],"comments":null,"info":{"alias":[["Data","NaturalTransformation"],{"Left":"NaturalTransformation"}],"declType":"alias","fixity":{"associativity":"infixr","precedence":4}},"kind":null,"sourceSpan":{"end":[20,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/NaturalTransformation.purs","start":[20,1]},"title":"type (~>)"}],"name":"Data.NaturalTransformation","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Newtype/docs.json b/tests/purs/publish/basic-example/output/Data.Newtype/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Newtype/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Additive"],"Additive"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[37,51],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[37,1]},"title":"newtypeAdditive"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Multiplicative"],"Multiplicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[39,63],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[39,1]},"title":"newtypeMultiplicative"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Conj"],"Conj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[41,43],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[41,1]},"title":"newtypeConj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Disj"],"Disj"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[43,43],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[43,1]},"title":"newtypeDisj"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Dual"],"Dual"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[45,43],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[45,1]},"title":"newtypeDual"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid","Endo"],"Endo"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":"c","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[47,51],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[47,1]},"title":"newtypeEndo"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[49,45],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[49,1]},"title":"newtypeFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[51,43],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[51,1]},"title":"newtypeLast"}],"comments":"A type class for `newtype`s to enable convenient wrapping and unwrapping,\nand the use of the other functions in this module.\n\nThe compiler can derive instances of `Newtype` automatically:\n\n``` purescript\nnewtype EmailAddress = EmailAddress String\n\nderive instance newtypeEmailAddress :: Newtype EmailAddress _\n```\n\nNote that deriving for `Newtype` instances requires that the type be\ndefined as `newtype` rather than `data` declaration (even if the `data`\nstructurally fits the rules of a `newtype`), and the use of a wildcard for\nthe wrapped type.\n","info":{"arguments":[["t",null],["a",null]],"declType":"typeClass","fundeps":[[["t"],["a"]]],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[29,44],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[29,1]},"title":"Newtype"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[31,42],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[31,1]},"title":"wrap"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[34,44],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[34,1]},"title":"unwrap"},{"children":[],"comments":"Given a constructor for a `Newtype`, this returns the appropriate `unwrap`\nfunction.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[55,52],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[55,1]},"title":"un"},{"children":[],"comments":"This combinator unwraps the newtype, applies a monomorphic function to the \ncontained value and wraps the result back in the newtype\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[60,56],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[60,1]},"title":"modify"},{"children":[],"comments":"This combinator is for when you have a higher order function that you want\nto use in the context of some newtype - `foldMap` being a common example:\n\n``` purescript\nala Additive foldMap [1,2,3,4] -- 10\nala Multiplicative foldMap [1,2,3,4] -- 24\nala Conj foldMap [true, false] -- false\nala Disj foldMap [true, false] -- true\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[79,9],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[72,1]},"title":"ala"},{"children":[],"comments":"Similar to `ala` but useful for cases where you want to use an additional\nprojection with the higher order function:\n\n``` purescript\nalaF Additive foldMap String.length [\"hello\", \"world\"] -- 10\nalaF Multiplicative foldMap Math.abs [1.0, -2.0, 3.0, -4.0] -- 24.0\n```\n\nThe type admits other possibilities due to the polymorphic `Functor`\nconstraints, but the case described above works because ((->) a) is a\n`Functor`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[102,9],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[93,1]},"title":"alaF"},{"children":[],"comments":"Lifts a function operate over newtypes. This can be used to lift a\nfunction to manipulate the contents of a single newtype, somewhat like\n`map` does for a `Functor`:\n\n``` purescript\nnewtype Label = Label String\nderive instance newtypeLabel :: Newtype Label _\n\ntoUpperLabel :: Label -> Label\ntoUpperLabel = over Label String.toUpper\n```\n\nBut the result newtype is polymorphic, meaning the result can be returned\nas an alternative newtype:\n\n``` purescript\nnewtype UppercaseLabel = UppercaseLabel String\nderive instance newtypeUppercaseLabel :: Newtype UppercaseLabel _\n\ntoUpperLabel' :: Label -> UppercaseLabel\ntoUpperLabel' = over Label String.toUpper\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[134,7],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[127,1]},"title":"over"},{"children":[],"comments":"Much like `over`, but where the lifted function operates on values in a\n`Functor`:\n\n``` purescript\nfindLabel :: String -> Array Label -> Maybe Label\nfindLabel s = overF Label (Foldable.find (_ == s))\n```\n\nThe above example also demonstrates that the functor type is polymorphic\nhere too, the input is an `Array` but the result is a `Maybe`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[156,9],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[147,1]},"title":"overF"},{"children":[],"comments":"The opposite of `over`: lowers a function that operates on `Newtype`d\nvalues to operate on the wrapped value instead.\n\n``` purescript\nnewtype Degrees = Degrees Number\nderive instance newtypeDegrees :: Newtype Degrees _\n\nnewtype NormalDegrees = NormalDegrees Number\nderive instance newtypeNormalDegrees :: Newtype NormalDegrees _\n\nnormaliseDegrees :: Degrees -> NormalDegrees\nnormaliseDegrees (Degrees deg) = NormalDegrees (deg % 360.0)\n\nasNormalDegrees :: Number -> Number\nasNormalDegrees = under Degrees normaliseDegrees\n```\n\nAs with `over` the `Newtype` is polymorphic, as illustrated in the example\nabove - both `Degrees` and `NormalDegrees` are instances of `Newtype`,\nso even though `normaliseDegrees` changes the result type we can still put\na `Number` in and get a `Number` out via `under`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[187,7],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[180,1]},"title":"under"},{"children":[],"comments":"Much like `under`, but where the lifted function operates on values in a\n`Functor`:\n\n``` purescript\nnewtype EmailAddress = EmailAddress String\nderive instance newtypeEmailAddress :: Newtype EmailAddress _\n\nisValid :: EmailAddress -> Boolean\nisValid x = false -- imagine a slightly less strict predicate here\n\nfindValidEmailString :: Array String -> Maybe String\nfindValidEmailString = underF EmailAddress (Foldable.find isValid)\n```\n\nThe above example also demonstrates that the functor type is polymorphic\nhere too, the input is an `Array` but the result is a `Maybe`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[215,9],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[206,1]},"title":"underF"},{"children":[],"comments":"Lifts a binary function to operate over newtypes.\n\n``` purescript\nnewtype Meter = Meter Int\nderive newtype instance newtypeMeter :: Newtype Meter _\nnewtype SquareMeter = SquareMeter Int\nderive newtype instance newtypeSquareMeter :: Newtype SquareMeter _\n\narea :: Meter -> Meter -> SquareMeter\narea = over2 Meter (*)\n```\n\nThe above example also demonstrates that the return type is polymorphic\nhere too.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[240,7],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[232,1]},"title":"over2"},{"children":[],"comments":"Much like `over2`, but where the lifted binary function operates on\nvalues in a `Functor`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[255,9],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[245,1]},"title":"overF2"},{"children":[],"comments":"The opposite of `over2`: lowers a binary function that operates on `Newtype`d\nvalues to operate on the wrapped value instead.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[268,7],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[260,1]},"title":"under2"},{"children":[],"comments":"Much like `under2`, but where the lifted binary function operates on\nvalues in a `Functor`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"s","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"g","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[283,9],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[273,1]},"title":"underF2"},{"children":[],"comments":"Similar to the function from the `Traversable` class, but operating within\na newtype instead.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[295,9],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[288,1]},"title":"traverse"},{"children":[],"comments":"Similar to the function from the `Distributive` class, but operating within\na newtype instead.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[307,7],"name":"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs","start":[300,1]},"title":"collect"}],"name":"Data.Newtype","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Ord.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Ord.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Ord.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[11,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[11,3]},"title":"genericCompare'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord","Generic"],"GenericOrd"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoConstructors"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[14,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[13,1]},"title":"genericOrdNoConstructors"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord","Generic"],"GenericOrd"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[16,1]},"title":"genericOrdNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord","Generic"],"GenericOrd"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Ord","Generic"],"GenericOrd"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord","Generic"],"GenericOrd"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Sum"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[19,1]},"title":"genericOrdSum"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord","Generic"],"GenericOrd"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Ord","Generic"],"GenericOrd"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord","Generic"],"GenericOrd"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[29,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[25,1]},"title":"genericOrdProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord","Generic"],"GenericOrd"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord","Generic"],"GenericOrd"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[32,76],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[31,1]},"title":"genericOrdConstructor"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord","Generic"],"GenericOrd"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[34,1]},"title":"genericOrdArgument"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[11,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[10,1]},"title":"GenericOrd"},{"children":[],"comments":"A `Generic` implementation of the `compare` member from the `Ord` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Ord","Generic"],"GenericOrd"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[38,86],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs","start":[38,1]},"title":"genericCompare"}],"name":"Data.Ord.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Ord/docs.json b/tests/purs/publish/basic-example/output/Data.Ord/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Ord/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[49,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[49,3]},"title":"compare"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[52,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[51,1]},"title":"ordBoolean"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[55,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[54,1]},"title":"ordInt"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[58,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[57,1]},"title":"ordNumber"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[61,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[60,1]},"title":"ordString"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Char"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[64,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[63,1]},"title":"ordChar"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[67,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[66,1]},"title":"ordUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Void"],"Void"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[70,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[69,1]},"title":"ordVoid"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[73,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[72,1]},"title":"ordProxy"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[82,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[75,1]},"title":"ordArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[133,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[126,1]},"title":"ordOrdering"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"OrdRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[264,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[259,1]},"title":"ordRecord"}],"comments":"The `Ord` type class represents types which support comparisons with a\n_total order_.\n\n`Ord` instances should satisfy the laws of total orderings:\n\n- Reflexivity: `a <= a`\n- Antisymmetry: if `a <= b` and `b <= a` then `a == b`\n- Transitivity: if `a <= b` and `b <= c` then `a <= c`\n\n**Note:** The `Number` type is not an entirely law abiding member of this\nclass due to the presence of `NaN`, since `NaN <= NaN` evaluates to `false`\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[49,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[48,1]},"title":"Ord"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"f","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[232,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[232,3]},"title":"compare1"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[235,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[234,1]},"title":"ord1Array"}],"comments":"The `Ord1` type class represents totally ordered type constructors.\n","info":{"arguments":[["f",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"f","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq1"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[232,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[231,1]},"title":"Ord1"},{"children":[],"comments":"Test whether one value is _strictly less than_ another.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[136,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[136,1]},"title":"lessThan"},{"children":[],"comments":null,"info":{"alias":[["Data","Ord"],{"Right":{"Left":{"Ident":"lessThan"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[159,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[159,1]},"title":"(<)"},{"children":[],"comments":"Test whether one value is _non-strictly less than_ another.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[148,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[148,1]},"title":"lessThanOrEq"},{"children":[],"comments":null,"info":{"alias":[["Data","Ord"],{"Right":{"Left":{"Ident":"lessThanOrEq"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[160,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[160,1]},"title":"(<=)"},{"children":[],"comments":"Test whether one value is _strictly greater than_ another.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[142,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[142,1]},"title":"greaterThan"},{"children":[],"comments":null,"info":{"alias":[["Data","Ord"],{"Right":{"Left":{"Ident":"greaterThan"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[161,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[161,1]},"title":"(>)"},{"children":[],"comments":"Test whether one value is _non-strictly greater than_ another.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[154,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[154,1]},"title":"greaterThanOrEq"},{"children":[],"comments":null,"info":{"alias":[["Data","Ord"],{"Right":{"Left":{"Ident":"greaterThanOrEq"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":4}},"kind":null,"sourceSpan":{"end":[162,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[162,1]},"title":"(>=)"},{"children":[],"comments":"Compares two values by mapping them to a type with an `Ord` instance.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[165,67],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[165,1]},"title":"comparing"},{"children":[],"comments":"Take the minimum of two values. If they are considered equal, the first\nargument is chosen.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[170,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[170,1]},"title":"min"},{"children":[],"comments":"Take the maximum of two values. If they are considered equal, the first\nargument is chosen.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[179,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[179,1]},"title":"max"},{"children":[],"comments":"Clamp a value between a minimum and a maximum. For example:\n\n``` purescript\nlet f = clamp 0 10\nf (-5) == 0\nf 5    == 5\nf 15   == 10\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[194,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[194,1]},"title":"clamp"},{"children":[],"comments":"Test whether a value is between a minimum and a maximum (inclusive).\nFor example:\n\n``` purescript\nlet f = between 0 10\nf 0    == true\nf (-5) == false\nf 5    == true\nf 10   == true\nf 15   == false\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[208,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[208,1]},"title":"between"},{"children":[],"comments":"The absolute value function. `abs x` is defined as `if x >= zero then x\nelse negate x`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[216,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[216,1]},"title":"abs"},{"children":[],"comments":"The sign function; returns `one` if the argument is positive,\n`negate one` if the argument is negative, or `zero` if the argument is `zero`.\nFor floating point numbers with signed zeroes, when called with a zero,\nthis function returns the argument in order to preserve the sign.\nFor any `x`, we should have `signum x * abs x == x`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[224,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[224,1]},"title":"signum"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[239,73],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[239,3]},"title":"compareRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"OrdRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[242,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[241,1]},"title":"ordRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"OrdRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"rowTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"OrdRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[257,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[244,1]},"title":"ordRecordCons"}],"comments":null,"info":{"arguments":[["rowlist",null],["row",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlist","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"EqRecord"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[239,73],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs","start":[238,1]},"title":"OrdRecord"}],"name":"Data.Ord","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Ordering/docs.json b/tests/purs/publish/basic-example/output/Data.Ordering/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Ordering/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[13,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[13,15]},"title":"LT"},{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[13,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[13,20]},"title":"GT"},{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[13,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[13,25]},"title":"EQ"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[15,1]},"title":"eqOrdering"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[21,1]},"title":"semigroupOrdering"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[29,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[26,1]},"title":"showOrdering"}],"comments":"The `Ordering` data type represents the three possible outcomes of\ncomparing two values:\n\n`LT` - The first value is _less than_ the second.\n`GT` - The first value is _greater than_ the second.\n`EQ` - The first value is _equal to_ the second.\n","info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[13,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[13,1]},"title":"Ordering"},{"children":[],"comments":"Reverses an `Ordering` value, flipping greater than for less than while\npreserving equality.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[33,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs","start":[33,1]},"title":"invert"}],"name":"Data.Ordering","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Reflectable/docs.json b/tests/purs/publish/basic-example/output/Data.Reflectable/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Reflectable/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":"Reflect a type `v` to its term-level representation.\n","info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"v","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[21,3]},"title":"reflectType"}],"comments":"A type-class for reflectable types.\n\nInstances for the following kinds are solved by the compiler:\n* Boolean\n* Int\n* Ordering\n* Symbol\n","info":{"arguments":[["v",null],["t",null]],"declType":"typeClass","fundeps":[[["v"],["t"]]],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[21,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[19,1]},"title":"Reflectable"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Reflectable"],"Reifiable"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[30,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[30,1]},"title":"<anonymous>"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Reflectable"],"Reifiable"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[31,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[31,1]},"title":"<anonymous>"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Reflectable"],"Reifiable"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Ordering"],"Ordering"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[32,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[32,1]},"title":"<anonymous>"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Reflectable"],"Reifiable"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[33,1]},"title":"<anonymous>"}],"comments":"A type class for reifiable types.\n\nInstances of this type class correspond to the `t` synthesized\nby the compiler when solving the `Reflectable` type class.\n","info":{"arguments":[["t",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[28,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[28,1]},"title":"Reifiable"},{"children":[],"comments":"Reify a value of type `t` such that it can be consumed by a\nfunction constrained by the `Reflectable` type class. For\nexample:\n\n```purs\ntwiceFromType :: forall v. Reflectable v Int => Proxy v -> Int\ntwiceFromType = (_ * 2) <<< reflectType\n\ntwiceOfTerm :: Int\ntwiceOfTerm = reifyType 21 twiceFromType\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"t","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"t","tag":"TypeVar"}],"constraintClass":[["Data","Reflectable"],"Reifiable"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":{"identifier":"v","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"v","tag":"TypeVar"},{"annotation":[],"contents":"t","tag":"TypeVar"}],"constraintClass":[["Data","Reflectable"],"Reflectable"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"v","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[49,94],"name":"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs","start":[49,1]},"title":"reifyType"}],"name":"Data.Reflectable","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Ring.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Ring.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Ring.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[8,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs","start":[8,3]},"title":"genericSub'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring","Generic"],"GenericRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[11,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs","start":[10,1]},"title":"genericRingNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring","Generic"],"GenericRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[14,61],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs","start":[13,1]},"title":"genericRingArgument"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring","Generic"],"GenericRing"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Ring","Generic"],"GenericRing"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring","Generic"],"GenericRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,96],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs","start":[16,1]},"title":"genericRingProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring","Generic"],"GenericRing"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring","Generic"],"GenericRing"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[20,82],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs","start":[19,1]},"title":"genericRingConstructor"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[8,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs","start":[7,1]},"title":"GenericRing"},{"children":[],"comments":"A `Generic` implementation of the `sub` member from the `Ring` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Ring","Generic"],"GenericRing"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[23,76],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs","start":[23,1]},"title":"genericSub"}],"name":"Data.Ring.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Ring/docs.json b/tests/purs/publish/basic-example/output/Data.Ring/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Ring/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[28,3]},"title":"sub"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"Ring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[33,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[32,1]},"title":"ringInt"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"Ring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[35,1]},"title":"ringNumber"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"Ring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[39,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[38,1]},"title":"ringUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"Ring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[42,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[41,1]},"title":"ringFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"Ring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[45,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[44,1]},"title":"ringProxy"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"RingRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"Ring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[48,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[47,1]},"title":"ringRecord"}],"comments":"The `Ring` class is for types that support addition, multiplication,\nand subtraction operations.\n\nInstances must satisfy the following laws in addition to the `Semiring`\nlaws:\n\n- Additive inverse: `a - a = zero`\n- Compatibility of `sub` and `negate`: `a - b = a + (zero - b)`\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}]},"kind":null,"sourceSpan":{"end":[28,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[27,1]},"title":"Ring"},{"children":[],"comments":"`negate x` can be used as a shorthand for `zero - x`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[51,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[51,1]},"title":"negate"},{"children":[],"comments":null,"info":{"alias":[["Data","Ring"],{"Right":{"Left":{"Ident":"sub"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":6}},"kind":null,"sourceSpan":{"end":[30,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[30,1]},"title":"(-)"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[61,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[61,3]},"title":"subRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"RingRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[64,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[63,1]},"title":"ringRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"RingRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Ring"],"Ring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ring"],"RingRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[78,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[66,1]},"title":"ringRecordCons"}],"comments":"A class for records where all fields have `Ring` instances, used to\nimplement the `Ring` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["subrow"]]],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlist","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"SemiringRecord"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[61,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs","start":[60,1]},"title":"RingRecord"}],"name":"Data.Ring","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Semigroup.First/docs.json b/tests/purs/publish/basic-example/output/Data.Semigroup.First/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Semigroup.First/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[13,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[13,17]},"title":"First"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[15,56],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[15,1]},"title":"eqFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[16,1]},"title":"eq1First"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[18,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[18,1]},"title":"ordFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[19,1]},"title":"ord1First"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[21,1]},"title":"boundedFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[23,1]},"title":"showFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[26,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[26,1]},"title":"functorFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[29,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[28,1]},"title":"applyFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[32,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[31,1]},"title":"applicativeFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[34,1]},"title":"bindFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[37,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[37,1]},"title":"monadFirst"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","First"],"First"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[39,1]},"title":"semigroupFirst"}],"comments":"Semigroup where `append` always takes the first option.\n\n``` purescript\nFirst x <> First y == First x\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[13,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs","start":[13,1]},"title":"First"}],"name":"Data.Semigroup.First","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Semigroup.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Semigroup.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Semigroup.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[11,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[11,3]},"title":"genericAppend'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Generic"],"GenericSemigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoConstructors"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[14,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[13,1]},"title":"genericSemigroupNoConstructors"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Generic"],"GenericSemigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[16,1]},"title":"genericSemigroupNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup","Generic"],"GenericSemigroup"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup","Generic"],"GenericSemigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Generic"],"GenericSemigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[19,1]},"title":"genericSemigroupProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup","Generic"],"GenericSemigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Generic"],"GenericSemigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,88],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[23,1]},"title":"genericSemigroupConstructor"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Generic"],"GenericSemigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[26,1]},"title":"genericSemigroupArgument"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[11,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[10,1]},"title":"GenericSemigroup"},{"children":[],"comments":"A `Generic` implementation of the `append` member from the `Semigroup` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup","Generic"],"GenericSemigroup"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[30,84],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs","start":[30,1]},"title":"genericAppend"}],"name":"Data.Semigroup.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Semigroup.Last/docs.json b/tests/purs/publish/basic-example/output/Data.Semigroup.Last/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Semigroup.Last/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"declType":"dataConstructor"},"sourceSpan":{"end":[13,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[13,16]},"title":"Last"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Eq"],"Eq"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[15,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[15,1]},"title":"eqLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Eq"],"Eq1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[16,1]},"title":"eq1Last"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Ord"],"Ord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[18,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[18,1]},"title":"ordLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Ord"],"Ord1"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[19,1]},"title":"ord1Last"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Bounded"],"Bounded"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Bounded"],"Bounded"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[21,1]},"title":"boundedLast"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[23,1]},"title":"showLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[26,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[26,1]},"title":"functorLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[29,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[28,1]},"title":"applyLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[32,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[31,1]},"title":"applicativeLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[34,1]},"title":"bindLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[37,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[37,1]},"title":"monadLast"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup","Last"],"Last"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[39,1]},"title":"semigroupLast"}],"comments":"Semigroup where `append` always takes the second option.\n\n``` purescript\nLast x <> Last y == Last y\n```\n","info":{"dataDeclType":"newtype","declType":"data","roles":["Representational"],"typeArguments":[["a",null]]},"kind":null,"sourceSpan":{"end":[13,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs","start":[13,1]},"title":"Last"}],"name":"Data.Semigroup.Last","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Semigroup/docs.json b/tests/purs/publish/basic-example/output/Data.Semigroup/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Semigroup/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[35,3]},"title":"append"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[39,1]},"title":"semigroupString"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[43,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[42,1]},"title":"semigroupUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Void"],"Void"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[46,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[45,1]},"title":"semigroupVoid"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"s'","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"s","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"s'","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[49,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[48,1]},"title":"semigroupFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[52,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[51,1]},"title":"semigroupArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[55,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[54,1]},"title":"semigroupProxy"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"SemigroupRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[58,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[57,1]},"title":"semigroupRecord"}],"comments":"The `Semigroup` type class identifies an associative operation on a type.\n\nInstances are required to satisfy the following law:\n\n- Associativity: `(x <> y) <> z = x <> (y <> z)`\n\nOne example of a `Semigroup` is `String`, with `(<>)` defined as string\nconcatenation. Another example is `List a`, with `(<>)` defined as\nlist concatenation.\n\n### Newtypes for Semigroup\n\nThere are two other ways to implement an instance for this type class\nregardless of which type is used. These instances can be used by\nwrapping the values in one of the two newtypes below:\n1. `First` - Use the first argument every time: `append first _ = first`.\n2. `Last` - Use the last argument every time: `append _ last = last`.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[35,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[34,1]},"title":"Semigroup"},{"children":[],"comments":null,"info":{"alias":[["Data","Semigroup"],{"Right":{"Left":{"Ident":"append"}}}],"declType":"alias","fixity":{"associativity":"infixr","precedence":5}},"kind":null,"sourceSpan":{"end":[37,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[37,1]},"title":"(<>)"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[67,77],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[67,3]},"title":"appendRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"SemigroupRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[70,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[69,1]},"title":"semigroupRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"SemigroupRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"SemigroupRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[84,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[72,1]},"title":"semigroupRecordCons"}],"comments":"A class for records where all fields have `Semigroup` instances, used to\nimplement the `Semigroup` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["subrow"]]],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[67,77],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs","start":[66,1]},"title":"SemigroupRecord"}],"name":"Data.Semigroup","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Semiring.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Semiring.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Semiring.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[8,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[8,3]},"title":"genericAdd'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[9,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[9,3]},"title":"genericZero'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[10,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[10,3]},"title":"genericMul'"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[11,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[11,3]},"title":"genericOne'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring","Generic"],"GenericSemiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[17,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[13,1]},"title":"genericSemiringNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring","Generic"],"GenericSemiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[23,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[19,1]},"title":"genericSemiringArgument"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring","Generic"],"GenericSemiring"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Semiring","Generic"],"GenericSemiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring","Generic"],"GenericSemiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[29,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[25,1]},"title":"genericSemiringProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semiring","Generic"],"GenericSemiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring","Generic"],"GenericSemiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[31,1]},"title":"genericSemiringConstructor"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[11,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[7,1]},"title":"GenericSemiring"},{"children":[],"comments":"A `Generic` implementation of the `zero` member from the `Semiring` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Semiring","Generic"],"GenericSemiring"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[38,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[38,1]},"title":"genericZero"},{"children":[],"comments":"A `Generic` implementation of the `one` member from the `Semiring` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Semiring","Generic"],"GenericSemiring"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[42,70],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[42,1]},"title":"genericOne"},{"children":[],"comments":"A `Generic` implementation of the `add` member from the `Semiring` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Semiring","Generic"],"GenericSemiring"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[46,80],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[46,1]},"title":"genericAdd"},{"children":[],"comments":"A `Generic` implementation of the `mul` member from the `Semiring` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Semiring","Generic"],"GenericSemiring"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[50,80],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs","start":[50,1]},"title":"genericMul"}],"name":"Data.Semiring.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Semiring/docs.json b/tests/purs/publish/basic-example/output/Data.Semiring/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Semiring/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[45,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[45,3]},"title":"add"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[46,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[46,3]},"title":"zero"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[47,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[47,3]},"title":"mul"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":"a","tag":"TypeVar"}},"sourceSpan":{"end":[48,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[48,3]},"title":"one"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[57,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[53,1]},"title":"semiringInt"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[63,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[59,1]},"title":"semiringNumber"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[69,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[65,1]},"title":"semiringFn"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[75,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[71,1]},"title":"semiringUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[81,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[77,1]},"title":"semiringProxy"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"list","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"list","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"SemiringRecord"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"Semiring"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[87,63],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[83,1]},"title":"semiringRecord"}],"comments":"The `Semiring` class is for types that support an addition and\nmultiplication operation.\n\nInstances must satisfy the following laws:\n\n- Commutative monoid under addition:\n  - Associativity: `(a + b) + c = a + (b + c)`\n  - Identity: `zero + a = a + zero = a`\n  - Commutative: `a + b = b + a`\n- Monoid under multiplication:\n  - Associativity: `(a * b) * c = a * (b * c)`\n  - Identity: `one * a = a * one = a`\n- Multiplication distributes over addition:\n  - Left distributivity: `a * (b + c) = (a * b) + (a * c)`\n  - Right distributivity: `(a + b) * c = (a * c) + (b * c)`\n- Annihilation: `zero * a = a * zero = zero`\n\n**Note:** The `Number` and `Int` types are not fully law abiding\nmembers of this class hierarchy due to the potential for arithmetic\noverflows, and in the case of `Number`, the presence of `NaN` and\n`Infinity` values. The behaviour is unspecified in these cases.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[48,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[44,1]},"title":"Semiring"},{"children":[],"comments":null,"info":{"alias":[["Data","Semiring"],{"Right":{"Left":{"Ident":"add"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":6}},"kind":null,"sourceSpan":{"end":[50,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[50,1]},"title":"(+)"},{"children":[],"comments":null,"info":{"alias":[["Data","Semiring"],{"Right":{"Left":{"Ident":"mul"}}}],"declType":"alias","fixity":{"associativity":"infixl","precedence":7}},"kind":null,"sourceSpan":{"end":[51,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[51,1]},"title":"(*)"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[98,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[98,3]},"title":"addRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[99,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[99,3]},"title":"mulRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[100,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[100,3]},"title":"oneRecord"},{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[101,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[101,3]},"title":"zeroRecord"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"SemiringRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"tag":"REmpty"}],"tag":"TypeApp"}},"sourceSpan":{"end":[107,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[103,1]},"title":"semiringRecordNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"},{"annotation":[],"contents":"focus","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Cons"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"},{"annotation":[],"contents":"subrowTail","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"SemiringRecord"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Semiring"],"Semiring"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semiring"],"SemiringRecord"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"subrow","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[140,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[109,1]},"title":"semiringRecordCons"}],"comments":"A class for records where all fields have `Semiring` instances, used to\nimplement the `Semiring` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null],["subrow",null]],"declType":"typeClass","fundeps":[[["rowlist"],["subrow"]]],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[101,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs","start":[97,1]},"title":"SemiringRecord"}],"name":"Data.Semiring","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Show.Generic/docs.json b/tests/purs/publish/basic-example/output/Data.Show.Generic/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Show.Generic/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[15,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[15,3]},"title":"genericShow'"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show","Generic"],"GenericShow"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoConstructors"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[20,1]},"title":"genericShowNoConstructors"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show","Generic"],"GenericShow"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Show","Generic"],"GenericShow"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show","Generic"],"GenericShow"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Sum"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[28,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[26,1]},"title":"genericShowSum"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show","Generic"],"GenericShowArgs"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"name","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show","Generic"],"GenericShow"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Constructor"],"tag":"TypeConstructor"},{"annotation":[],"contents":"name","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[48,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[37,1]},"title":"genericShowConstructor"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[15,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[14,1]},"title":"GenericShow"},{"children":[],"comments":"A `Generic` implementation of the `show` member from the `Show` type class.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"rep","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Generic","Rep"],"Generic"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rep","tag":"TypeVar"}],"constraintClass":[["Data","Show","Generic"],"GenericShow"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[54,77],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[54,1]},"title":"genericShow"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[18,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[18,3]},"title":"genericShowArgs"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show","Generic"],"GenericShowArgs"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Generic","Rep"],"NoArguments"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[23,1]},"title":"genericShowArgsNoArguments"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show","Generic"],"GenericShowArgs"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Data","Show","Generic"],"GenericShowArgs"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show","Generic"],"GenericShowArgs"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Product"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[35,73],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[30,1]},"title":"genericShowArgsProduct"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show","Generic"],"GenericShowArgs"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Generic","Rep"],"Argument"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[51,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[50,1]},"title":"genericShowArgsArgument"}],"comments":null,"info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[18,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs","start":[17,1]},"title":"GenericShowArgs"}],"name":"Data.Show.Generic","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Show/docs.json b/tests/purs/publish/basic-example/output/Data.Show/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Show/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[24,3]},"title":"show"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[26,1]},"title":"showUnit"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[31,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[29,1]},"title":"showBoolean"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[34,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[33,1]},"title":"showInt"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Number"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[37,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[36,1]},"title":"showNumber"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Char"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[40,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[39,1]},"title":"showChar"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[43,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[42,1]},"title":"showString"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[46,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[45,1]},"title":"showArray"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[49,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[48,1]},"title":"showProxy"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Void"],"Void"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[52,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[51,1]},"title":"showVoid"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rs","tag":"TypeVar"},{"annotation":[],"contents":"rs","tag":"TypeVar"}],"constraintClass":[["Prim","Row"],"Nub"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rs","tag":"TypeVar"},{"annotation":[],"contents":"ls","tag":"TypeVar"}],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"ls","tag":"TypeVar"},{"annotation":[],"contents":"rs","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"ShowRecordFields"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"Show"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rs","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[60,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[54,1]},"title":"showRecord"}],"comments":"The `Show` type class represents those types which can be converted into\na human-readable `String` representation.\n\nWhile not required, it is recommended that for any expression `x`, the\nstring `show x` be executable PureScript code which evaluates to the same\nvalue as the expression `x`.\n","info":{"arguments":[["a",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":{"end":[24,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[23,1]},"title":"Show"},{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"rowlist","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[66,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[66,3]},"title":"showRecordFields"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"ShowRecordFields"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[69,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[68,1]},"title":"showRecordFieldsNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"ShowRecordFields"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","RowList"],"Nil"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[79,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[71,1]},"title":"showRecordFieldsConsNil"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"key","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"ShowRecordFields"],"constraintData":null,"constraintKindArgs":[]},{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"focus","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Show"],"ShowRecordFields"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"Cons"],"tag":"TypeConstructor"},{"annotation":[],"contents":"key","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"focus","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"rowlistTail","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"row","tag":"TypeVar"}],"tag":"TypeApp"}},"sourceSpan":{"end":[91,64],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[81,1]},"title":"showRecordFieldsCons"}],"comments":"A class for records where all fields have `Show` instances, used to\nimplement the `Show` instance for records.\n","info":{"arguments":[["rowlist",null],["row",null]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[66,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/Show.purs","start":[65,1]},"title":"ShowRecordFields"}],"name":"Data.Show","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Symbol/docs.json b/tests/purs/publish/basic-example/output/Data.Symbol/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Symbol/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"sym","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[11,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Symbol.purs","start":[11,3]},"title":"reflectSymbol"}],"comments":"A class for known symbols\n","info":{"arguments":[["sym",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[11,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Symbol.purs","start":[10,1]},"title":"IsSymbol"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":{"identifier":"sym","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"sym","tag":"TypeVar"}],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Type","Proxy"],"Proxy"],"tag":"TypeConstructor"},{"annotation":[],"contents":"sym","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[16,85],"name":"../../../support/bower_components/purescript-prelude/src/Data/Symbol.purs","start":[16,1]},"title":"reifySymbol"}],"name":"Data.Symbol","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Unit/docs.json b/tests/purs/publish/basic-example/output/Data.Unit/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Unit/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"The `Unit` type has a single inhabitant, called `unit`. It represents\nvalues with no computational content.\n\n`Unit` is often used, wrapped in a monadic type constructor, as the\nreturn type of a computation where only the _effects_ are important.\n\nWhen returning a value of type `Unit` from an FFI function, it is\nrecommended to use `undefined`, or not return a value at all.\n","info":{"dataDeclType":"data","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[11,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Unit.purs","start":[11,1]},"title":"Unit"},{"children":[],"comments":"`unit` is the sole inhabitant of the `Unit` type.\n","info":{"declType":"value","type":{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[14,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Unit.purs","start":[14,1]},"title":"unit"}],"name":"Data.Unit","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Data.Void/docs.json b/tests/purs/publish/basic-example/output/Data.Void/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Data.Void/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"An uninhabited data type. In other words, one can never create\na runtime value of type `Void` because no such value exists.\n\n`Void` is useful to eliminate the possibility of a value being created.\nFor example, a value of type `Either Void Boolean` can never have\na Left value created in PureScript.\n\nThis should not be confused with the keyword `void` that commonly appears in\nC-family languages, such as Java:\n```\npublic class Foo {\n  void doSomething() { System.out.println(\"hello world!\"); }\n}\n```\n\nIn PureScript, one often uses `Unit` to achieve similar effects as\nthe `void` of C-family languages above.\n","info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[20,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Void.purs","start":[20,1]},"title":"Void"},{"children":[],"comments":"Eliminator for the `Void` type.\nUseful for stating that some code branch is impossible because you've\n\"acquired\" a value of type `Void` (which you can't).\n\n```purescript\nrightOnly :: forall t . Either Void t -> t\nrightOnly (Left v) = absurd v\nrightOnly (Right t) = t\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Void"],"Void"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[31,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Void.purs","start":[31,1]},"title":"absurd"}],"name":"Data.Void","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json b/tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[10,51],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[10,1]},"title":"log"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[13,62],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[13,1]},"title":"logShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[16,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[16,1]},"title":"warn"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[19,63],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[19,1]},"title":"warnShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[22,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[22,1]},"title":"error"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[25,64],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[25,1]},"title":"errorShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[28,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[28,1]},"title":"info"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[31,63],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[31,1]},"title":"infoShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[34,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[34,1]},"title":"debug"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[37,64],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[37,1]},"title":"debugShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[40,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[40,1]},"title":"time"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[43,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[43,1]},"title":"timeLog"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[46,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[46,1]},"title":"timeEnd"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[49,43],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[49,1]},"title":"clear"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[52,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[52,1]},"title":"group"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[55,62],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[55,1]},"title":"groupCollapsed"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[58,46],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[58,1]},"title":"groupEnd"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[61,61],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[61,1]},"title":"grouped"}],"name":"Effect.Class.Console","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Effect.Class/docs.json b/tests/purs/publish/basic-example/output/Effect.Class/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Effect.Class/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"declType":"typeClassMember","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[16,42],"name":"../../../support/bower_components/purescript-effect/src/Effect/Class.purs","start":[16,3]},"title":"liftEffect"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Class"],"MonadEffect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[19,24],"name":"../../../support/bower_components/purescript-effect/src/Effect/Class.purs","start":[18,1]},"title":"monadEffectEffect"}],"comments":"The `MonadEffect` class captures those monads which support native effects.\n\nInstances are provided for `Effect` itself, and the standard monad\ntransformers.\n\n`liftEffect` can be used in any appropriate monad transformer stack to lift an\naction of type `Effect a` into the monad.\n\n","info":{"arguments":[["m",null]],"declType":"typeClass","fundeps":[],"superclasses":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Control","Monad"],"Monad"],"constraintData":null,"constraintKindArgs":[]}]},"kind":{"keyword":"class","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Constraint"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[16,42],"name":"../../../support/bower_components/purescript-effect/src/Effect/Class.purs","start":[15,1]},"title":"MonadEffect"}],"name":"Effect.Class","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Effect.Console/docs.json b/tests/purs/publish/basic-example/output/Effect.Console/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Effect.Console/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"Write a message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[12,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[10,1]},"title":"log"},{"children":[],"comments":"Write a value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[16,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[16,1]},"title":"logShow"},{"children":[],"comments":"Write an warning to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[22,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[20,1]},"title":"warn"},{"children":[],"comments":"Write an warning value to the console, using its `Show` instance to produce\na `String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[26,49],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[26,1]},"title":"warnShow"},{"children":[],"comments":"Write an error to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[32,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[30,1]},"title":"error"},{"children":[],"comments":"Write an error value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[36,50],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[36,1]},"title":"errorShow"},{"children":[],"comments":"Write an info message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[42,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[40,1]},"title":"info"},{"children":[],"comments":"Write an info value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[46,49],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[46,1]},"title":"infoShow"},{"children":[],"comments":"Write an debug message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[52,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[50,1]},"title":"debug"},{"children":[],"comments":"Write an debug value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[56,50],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[56,1]},"title":"debugShow"},{"children":[],"comments":"Start a named timer.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[60,45],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[60,1]},"title":"time"},{"children":[],"comments":"Print the time since a named timer started in milliseconds.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[63,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[63,1]},"title":"timeLog"},{"children":[],"comments":"Stop a named timer and print time since it started in milliseconds.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[66,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[66,1]},"title":"timeEnd"},{"children":[],"comments":"Clears the console\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[69,36],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[69,1]},"title":"clear"},{"children":[],"comments":"Creates a new inline group in the console. This indents following console\nmessages by an additional level, until `groupEnd` is called.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[73,46],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[73,1]},"title":"group"},{"children":[],"comments":"Same as `group`, but groups are collapsed by default.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[76,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[76,1]},"title":"groupCollapsed"},{"children":[],"comments":"Exits the current inline group in the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[79,39],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[79,1]},"title":"groupEnd"},{"children":[],"comments":"Perform an effect within the context of an inline group in the console.\nCalls `group` and `groupEnd` before and after the effect, respectively.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[83,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[83,1]},"title":"grouped"}],"name":"Effect.Console","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Effect.Uncurried/docs.json b/tests/purs/publish/basic-example/output/Effect.Uncurried/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Effect.Uncurried/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"This module defines types for effectful uncurried functions, as well as\nfunctions for converting back and forth between them.\n\nThis makes it possible to give a PureScript type to JavaScript functions\nsuch as this one:\n\n```javascript\nfunction logMessage(level, message) {\n  console.log(level + \": \" + message);\n}\n```\n\nIn particular, note that `logMessage` performs effects immediately after\nreceiving all of its parameters, so giving it the type `Data.Function.Fn2\nString String Unit`, while convenient, would effectively be a lie.\n\nOne way to handle this would be to convert the function into the normal\nPureScript form (namely, a curried function returning an Effect action),\nand performing the marshalling in JavaScript, in the FFI module, like this:\n\n```purescript\n-- In the PureScript file:\nforeign import logMessage :: String -> String -> Effect Unit\n```\n\n```javascript\n// In the FFI file:\nexports.logMessage = function(level) {\n  return function(message) {\n    return function() {\n      logMessage(level, message);\n    };\n  };\n};\n```\n\nThis method, unfortunately, turns out to be both tiresome and error-prone.\nThis module offers an alternative solution. By providing you with:\n\n * the ability to give the real `logMessage` function a PureScript type,\n   and\n * functions for converting between this form and the normal PureScript\n   form,\n\nthe FFI boilerplate is no longer needed. The previous example becomes:\n\n```purescript\n-- In the PureScript file:\nforeign import logMessageImpl :: EffectFn2 String String Unit\n```\n\n```javascript\n// In the FFI file:\nexports.logMessageImpl = logMessage\n```\n\nYou can then use `runEffectFn2` to provide a nicer version:\n\n```purescript\nlogMessage :: String -> String -> Effect Unit\nlogMessage = runEffectFn2 logMessageImpl\n```\n\n(note that this has the same type as the original `logMessage`).\n\nEffectively, we have reduced the risk of errors by moving as much code into\nPureScript as possible, so that we can leverage the type system. Hopefully,\nthis is a little less tiresome too.\n\nHere's a slightly more advanced example. Here, because we are using\ncallbacks, we need to use `mkEffectFn{N}` as well.\n\nSuppose our `logMessage` changes so that it sometimes sends details of the\nmessage to some external server, and in those cases, we want the resulting\n`HttpResponse` (for whatever reason).\n\n```javascript\nfunction logMessage(level, message, callback) {\n  console.log(level + \": \" + message);\n  if (level > LogLevel.WARN) {\n    LogAggregatorService.post(\"/logs\", {\n      level: level,\n      message: message\n    }, callback);\n  } else {\n    callback(null);\n  }\n}\n```\n\nThe import then looks like this:\n```purescript\nforeign import logMessageImpl\n EffectFn3\n   String\n   String\n   (EffectFn1 (Nullable HttpResponse) Unit)\n   Unit\n```\n\nAnd, as before, the FFI file is extremely simple:\n\n```javascript\nexports.logMessageImpl = logMessage\n```\n\nFinally, we use `runEffectFn{N}` and `mkEffectFn{N}` for a more comfortable\nPureScript version:\n\n```purescript\nlogMessage ::\n  String ->\n  String ->\n  (Nullable HttpResponse -> Effect Unit) ->\n  Effect Unit\nlogMessage level message callback =\n  runEffectFn3 logMessageImpl level message (mkEffectFn1 callback)\n```\n\nThe general naming scheme for functions and types in this module is as\nfollows:\n\n* `EffectFn{N}` means, an uncurried function which accepts N arguments and\n  performs some effects. The first N arguments are the actual function's\n  argument. The last type argument is the return type.\n* `runEffectFn{N}` takes an `EffectFn` of N arguments, and converts it into\n  the normal PureScript form: a curried function which returns an Effect\n  action.\n* `mkEffectFn{N}` is the inverse of `runEffectFn{N}`. It can be useful for\n  callbacks.\n\n","declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn1"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[229,74],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[228,1]},"title":"semigroupEffectFn1"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn1"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[259,36],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[258,1]},"title":"monoidEffectFn1"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational"],"typeArguments":[["t0",null],["t1",null]]},"kind":null,"sourceSpan":{"end":[138,54],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[138,1]},"title":"EffectFn1"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn2"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[232,80],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[231,1]},"title":"semigroupEffectFn2"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn2"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[262,38],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[261,1]},"title":"monoidEffectFn2"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null]]},"kind":null,"sourceSpan":{"end":[142,62],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[142,1]},"title":"EffectFn2"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn3"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[235,86],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[234,1]},"title":"semigroupEffectFn3"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn3"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[265,40],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[264,1]},"title":"monoidEffectFn3"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null]]},"kind":null,"sourceSpan":{"end":[146,70],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[146,1]},"title":"EffectFn3"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn4"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[238,92],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[237,1]},"title":"semigroupEffectFn4"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn4"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[268,42],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[267,1]},"title":"monoidEffectFn4"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null],["t4",null]]},"kind":null,"sourceSpan":{"end":[150,78],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[150,1]},"title":"EffectFn4"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn5"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[241,98],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[240,1]},"title":"semigroupEffectFn5"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn5"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[271,44],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[270,1]},"title":"monoidEffectFn5"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null],["t4",null],["t5",null]]},"kind":null,"sourceSpan":{"end":[154,86],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[154,1]},"title":"EffectFn5"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn6"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[244,104],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[243,1]},"title":"semigroupEffectFn6"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn6"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[274,46],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[273,1]},"title":"monoidEffectFn6"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null],["t4",null],["t5",null],["t6",null]]},"kind":null,"sourceSpan":{"end":[158,94],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[158,1]},"title":"EffectFn6"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn7"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[247,110],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[246,1]},"title":"semigroupEffectFn7"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn7"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[277,48],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[276,1]},"title":"monoidEffectFn7"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null],["t4",null],["t5",null],["t6",null],["t7",null]]},"kind":null,"sourceSpan":{"end":[162,102],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[162,1]},"title":"EffectFn7"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn8"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[250,116],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[249,1]},"title":"semigroupEffectFn8"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn8"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[280,50],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[279,1]},"title":"monoidEffectFn8"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null],["t4",null],["t5",null],["t6",null],["t7",null],["t8",null]]},"kind":null,"sourceSpan":{"end":[166,110],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[166,1]},"title":"EffectFn8"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn9"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[253,122],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[252,1]},"title":"semigroupEffectFn9"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn9"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[283,52],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[282,1]},"title":"monoidEffectFn9"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null],["t4",null],["t5",null],["t6",null],["t7",null],["t8",null],["t9",null]]},"kind":null,"sourceSpan":{"end":[170,118],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[170,1]},"title":"EffectFn9"},{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn10"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"j","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[256,131],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[255,1]},"title":"semigroupEffectFn10"},{"comments":null,"info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"r","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn10"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"j","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[286,55],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[285,1]},"title":"monoidEffectFn10"}],"comments":null,"info":{"dataDeclType":"data","declType":"data","roles":["Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational","Representational"],"typeArguments":[["t0",null],["t1",null],["t2",null],["t3",null],["t4",null],["t5",null],["t6",null],["t7",null],["t8",null],["t9",null],["t10",null]]},"kind":null,"sourceSpan":{"end":[174,127],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[174,1]},"title":"EffectFn10"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn1"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[179,35],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[178,1]},"title":"mkEffectFn1"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn2"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[181,42],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[180,1]},"title":"mkEffectFn2"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn3"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[183,49],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[182,1]},"title":"mkEffectFn3"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn4"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[185,56],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[184,1]},"title":"mkEffectFn4"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn5"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[187,63],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[186,1]},"title":"mkEffectFn5"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn6"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[189,70],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[188,1]},"title":"mkEffectFn6"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn7"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[191,77],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[190,1]},"title":"mkEffectFn7"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"h","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn8"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[193,84],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[192,1]},"title":"mkEffectFn8"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"h","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"i","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn9"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[195,91],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[194,1]},"title":"mkEffectFn9"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"h","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"i","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"j","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"j","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn10"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"j","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[197,99],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[196,1]},"title":"mkEffectFn10"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn1"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[200,33],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[199,1]},"title":"runEffectFn1"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn2"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[202,40],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[201,1]},"title":"runEffectFn2"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn3"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[204,47],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[203,1]},"title":"runEffectFn3"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn4"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[206,54],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[205,1]},"title":"runEffectFn4"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn5"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[208,61],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[207,1]},"title":"runEffectFn5"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn6"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[210,68],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[209,1]},"title":"runEffectFn6"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn7"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[212,75],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[211,1]},"title":"runEffectFn7"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"h","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn8"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[214,82],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[213,1]},"title":"runEffectFn8"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"h","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"i","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn9"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[216,89],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[215,1]},"title":"runEffectFn9"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"c","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"d","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"e","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"f","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"g","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"h","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"i","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"j","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect","Uncurried"],"EffectFn10"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"j","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"c","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"d","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"e","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"f","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"g","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"h","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"i","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"j","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[218,97],"name":"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs","start":[217,1]},"title":"runEffectFn10"}],"name":"Effect.Uncurried","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Effect.Unsafe/docs.json b/tests/purs/publish/basic-example/output/Effect.Unsafe/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Effect.Unsafe/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"Run an effectful computation.\n\n*Note*: use of this function can result in arbitrary side-effects.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[8,62],"name":"../../../support/bower_components/purescript-effect/src/Effect/Unsafe.purs","start":[8,1]},"title":"unsafePerformEffect"}],"name":"Effect.Unsafe","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Effect/docs.json b/tests/purs/publish/basic-example/output/Effect/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Effect/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"This module provides the `Effect` type, which is used to represent\n_native_ effects. The `Effect` type provides a typed API for effectful\ncomputations, while at the same time generating efficient JavaScript.\n","declarations":[{"children":[{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Functor"],"Functor"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[21,15],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[20,1]},"title":"functorEffect"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Apply"],"Apply"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[24,13],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[23,1]},"title":"applyEffect"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Applicative"],"Applicative"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[27,15],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[26,1]},"title":"applicativeEffect"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Bind"],"Bind"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[32,15],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[31,1]},"title":"bindEffect"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Control","Monad"],"Monad"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"sourceSpan":{"end":[36,37],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[36,1]},"title":"monadEffect"},{"comments":"The `Semigroup` instance for effects allows you to run two effects, one\nafter the other, and then combine their results using the result type's\n`Semigroup` instance.\n","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Semigroup"],"Semigroup"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Semigroup"],"Semigroup"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[42,24],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[41,1]},"title":"semigroupEffect"},{"comments":"If you have a `Monoid a` instance, then `mempty :: Effect a` is defined as\n`pure mempty`.\n","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Monoid"],"Monoid"],"constraintData":null,"constraintKindArgs":[]}],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Monoid"],"Monoid"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"sourceSpan":{"end":[47,24],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[46,1]},"title":"monoidEffect"}],"comments":"A native effect. The type parameter denotes the return type of running the\neffect, that is, an `Effect Int` is a possibly-effectful computation which\neventually produces a value of the type `Int` when it finishes.\n","info":{"dataDeclType":"data","declType":"data","roles":["Representational"],"typeArguments":[["t0",null]]},"kind":null,"sourceSpan":{"end":[16,43],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[16,1]},"title":"Effect"},{"children":[],"comments":"Loop until a condition becomes `true`.\n\n`untilE b` is an effectful computation which repeatedly runs the effectful\ncomputation `b`, until its return value is `true`.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[53,55],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[53,1]},"title":"untilE"},{"children":[],"comments":"Loop while a condition is `true`.\n\n`whileE b m` is effectful computation which runs the effectful computation\n`b`. If its result is `true`, it runs the effectful computation `m` and\nloops. If not, the computation ends.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[60,77],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[60,1]},"title":"whileE"},{"children":[],"comments":"Loop over a consecutive collection of numbers.\n\n`forE lo hi f` runs the computation returned by the function `f` for each\nof the inputs between `lo` (inclusive) and `hi` (exclusive).\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[66,73],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[66,1]},"title":"forE"},{"children":[],"comments":"Loop over an array of values.\n\n`foreachE xs f` runs the computation returned by the function `f` for each\nof the inputs `xs`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"tag":"ParensInType"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[72,82],"name":"../../../support/bower_components/purescript-effect/src/Effect.purs","start":[72,1]},"title":"foreachE"}],"name":"Effect","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Main/docs.json b/tests/purs/publish/basic-example/output/Main/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Main/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[{"comments":null,"info":{"arguments":[{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"declType":"dataConstructor"},"sourceSpan":{"end":[8,31],"name":"/home/jordan/programming/purescript/tests/purs/publish/basic-example/src/Main.purs","start":[8,16]},"title":"Target"},{"comments":null,"info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Data","Newtype"],"Newtype"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Main"],"Target"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":null,"tag":"TypeWildcard"}],"tag":"TypeApp"}},"sourceSpan":{"end":[10,50],"name":"/home/jordan/programming/purescript/tests/purs/publish/basic-example/src/Main.purs","start":[10,1]},"title":"newtypeTarget"}],"comments":null,"info":{"dataDeclType":"newtype","declType":"data","roles":[],"typeArguments":[]},"kind":null,"sourceSpan":{"end":[8,31],"name":"/home/jordan/programming/purescript/tests/purs/publish/basic-example/src/Main.purs","start":[8,1]},"title":"Target"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[["Main"],"Target"],"tag":"TypeConstructor"}},"kind":null,"sourceSpan":{"end":[12,25],"name":"/home/jordan/programming/purescript/tests/purs/publish/basic-example/src/Main.purs","start":[12,1]},"title":"greetingTarget"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[15,20],"name":"/home/jordan/programming/purescript/tests/purs/publish/basic-example/src/Main.purs","start":[15,1]},"title":"main"}],"name":"Main","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prelude/docs.json b/tests/purs/publish/basic-example/output/Prelude/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prelude/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"`Prelude` is a module that re-exports many other foundational modules from the `purescript-prelude` library\n(e.g. the Monad type class hierarchy, the Monoid type classes, Eq, Ord, etc.).\n\nTypically, this module will be imported in most other libraries and projects as an open import.\n\n```\nmodule MyModule where\n\nimport Prelude -- open import\n\nimport Data.Maybe (Maybe(..)) -- closed import\n```\n","declarations":[],"name":"Prelude","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.Boolean/docs.json b/tests/purs/publish/basic-example/output/Prim.Boolean/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.Boolean/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Boolean module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level `Boolean` data structure.","declarations":[{"children":[],"comments":"The 'True' boolean type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"True"},{"children":[],"comments":"The 'False' boolean type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"False"}],"name":"Prim.Boolean","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.Coerce/docs.json b/tests/purs/publish/basic-example/output/Prim.Coerce/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.Coerce/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Coerce module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains an automatically solved type class for coercing types that have provably-identical runtime representations with [purescript-safe-coerce](https://pursuit.purescript.org/packages/purescript-safe-coerce).","declarations":[{"children":[],"comments":"Coercible is a two-parameter type class that has instances for types `a`\nand `b` if the compiler can infer that they have the same representation.\nCoercible constraints are solved according to the following rules:\n\n* _reflexivity_, any type has the same representation as itself:\n`Coercible a a` holds.\n\n* _symmetry_, if a type `a` can be coerced to some other type `b`, then `b`\ncan also be coerced back to `a`: `Coercible a b` implies `Coercible b a`.\n\n* _transitivity_, if a type `a` can be coerced to some other type `b` which\ncan be coerced to some other type `c`, then `a` can also be coerced to `c`:\n`Coercible a b` and `Coercible b c` imply `Coercible a c`.\n\n* Newtypes can be freely wrapped and unwrapped when their constructor is\nin scope:\n\n      newtype Age = Age Int\n\n`Coercible Int Age` and `Coercible Age Int` hold since `Age` has the same\nruntime representation than `Int`.\n\nNewtype constructors have to be in scope to preserve abstraction. It's\ncommon to declare a newtype to encode some invariants (non emptiness of\narrays with `Data.Array.NonEmpty.NonEmptyArray` for example), hide its\nconstructor and export smart constructors instead. Without this restriction,\nthe guarantees provided by such newtypes would be void.\n\n* If none of the above are applicable, two types of kind `Type` may be\ncoercible, but only if their heads are the same. For example,\n`Coercible (Maybe a) (Either a b)` does not hold because `Maybe` and\n`Either` are different. Those types don't share a common runtime\nrepresentation so coercing between them would be unsafe. In addition their\narguments may need to be identical or coercible, depending on the _roles_\nof the head's type parameters. Roles are documented in [the PureScript\nlanguage reference](https://github.com/purescript/documentation/blob/master/language/Roles.md).\n\nCoercible being polykinded, we can also coerce more than types of kind `Type`:\n\n* Rows are coercible when they have the same labels, when the corresponding\npairs of types are coercible and when their tails are coercible:\n`Coercible ( label :: a | r ) ( label :: b | s )` holds when\n`Coercible a b` and `Coercible r s` do. Closed rows cannot be coerced to\nopen rows.\n\n* Higher kinded types are coercible if they are coercible when fully\nsaturated: `Coercible (f :: _ -> Type) (g :: _ -> Type)` holds when\n`Coercible (f a) (g a)` does.\n\nThis rule may seem puzzling since there is no term of type `_ -> Type` to\napply `coerce` to, but it is necessary when coercing types with higher\nkinded parameters.\n","info":{"arguments":[["a",{"annotation":[],"contents":"k","tag":"TypeVar"}],["b",{"annotation":[],"contents":"k","tag":"TypeVar"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Coercible"}],"name":"Prim.Coerce","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.Int/docs.json b/tests/purs/publish/basic-example/output/Prim.Int/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.Int/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Int module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with type-level intural numbers.","declarations":[{"children":[],"comments":"Compiler solved type class for adding type-level `Int`s.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["sum",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["sum"]],[["left","sum"],["right"]],[["right","sum"],["left"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Add"},{"children":[],"comments":"Compiler solved type class for comparing two type-level `Int`s.\nProduces an `Ordering`.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["ordering",{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["ordering"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Compare"},{"children":[],"comments":"Compiler solved type class for multiplying type-level `Int`s.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["product",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["product"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Mul"},{"children":[],"comments":"Compiler solved type class for converting a type-level `Int` into a type-level `String` (i.e. `Symbol`).\n","info":{"arguments":[["int",{"annotation":[],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],["string",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["int"],["string"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"ToString"}],"name":"Prim.Int","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.Ordering/docs.json b/tests/purs/publish/basic-example/output/Prim.Ordering/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.Ordering/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Ordering module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level `Ordering` data structure.","declarations":[{"children":[],"comments":"The `Ordering` kind represents the three possibilities of comparing two\ntypes of the same kind: `LT` (less than), `EQ` (equal to), and\n`GT` (greater than).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Ordering"},{"children":[],"comments":"The 'less than' ordering type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"LT"},{"children":[],"comments":"The 'equal to' ordering type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"EQ"},{"children":[],"comments":"The 'greater than' ordering type.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"GT"}],"name":"Prim.Ordering","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.Row/docs.json b/tests/purs/publish/basic-example/output/Prim.Row/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.Row/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Row module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with row types.","declarations":[{"children":[],"comments":"The Union type class is used to compute the union of two rows of types\n(left-biased, including duplicates).\n\nThe third type argument represents the union of the first two.\n","info":{"arguments":[["left",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["right",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["union",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["left","right"],["union"]],[["right","union"],["left"]],[["union","left"],["right"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Union"},{"children":[],"comments":"The Nub type class is used to remove duplicate labels from rows.\n","info":{"arguments":[["original",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["nubbed",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["original"],["nubbed"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Nub"},{"children":[],"comments":"The Lacks type class asserts that a label does not occur in a given row.\n","info":{"arguments":[["label",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["row",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Lacks"},{"children":[],"comments":"The Cons type class is a 4-way relation which asserts that one row of\ntypes can be obtained from another by inserting a new label/type pair on\nthe left.\n","info":{"arguments":[["label",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["a",{"annotation":[],"contents":"k","tag":"TypeVar"}],["tail",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["row",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["label","a","tail"],["row"]],[["label","row"],["a","tail"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Cons"}],"name":"Prim.Row","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.RowList/docs.json b/tests/purs/publish/basic-example/output/Prim.RowList/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.RowList/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.RowList module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level list (`RowList`) that represents an ordered view of a row of types.","declarations":[{"children":[],"comments":"A type level list representation of a row of types.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"RowList"},{"children":[],"comments":"Constructs a new `RowList` from a label, a type, and an existing tail\n`RowList`.  E.g: `Cons \"x\" Int (Cons \"y\" Int Nil)`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":{"identifier":"k","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Cons"},{"children":[],"comments":"The empty `RowList`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":{"identifier":"k","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Nil"},{"children":[],"comments":"Compiler solved type class for generating a `RowList` from a closed row\nof types.  Entries are sorted by label and duplicates are preserved in\nthe order they appeared in the row.\n","info":{"arguments":[["row",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}],["list",{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim","RowList"],"RowList"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"}]],"declType":"typeClass","fundeps":[[["row"],["list"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"RowToList"}],"name":"Prim.RowList","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.Symbol/docs.json b/tests/purs/publish/basic-example/output/Prim.Symbol/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.Symbol/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.Symbol module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with `Symbols`.","declarations":[{"children":[],"comments":"Compiler solved type class for appending `Symbol`s together.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["appended",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["appended"]],[["right","appended"],["left"]],[["appended","left"],["right"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Append"},{"children":[],"comments":"Compiler solved type class for comparing two `Symbol`s.\nProduces an `Ordering`.\n","info":{"arguments":[["left",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["right",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["ordering",{"annotation":[],"contents":[["Prim","Ordering"],"Ordering"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["left","right"],["ordering"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Compare"},{"children":[],"comments":"Compiler solved type class for either splitting up a symbol into its\nhead and tail or for combining a head and tail into a new symbol.\nRequires the head to be a single character and the combined string\ncannot be empty.\n","info":{"arguments":[["head",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["tail",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],["symbol",{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[[["head","tail"],["symbol"]],[["symbol"],["head","tail"]]],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Cons"}],"name":"Prim.Symbol","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim.TypeError/docs.json b/tests/purs/publish/basic-example/output/Prim.TypeError/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim.TypeError/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The Prim.TypeError module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains type classes that provide custom type error and warning functionality.","declarations":[{"children":[],"comments":"The Warn type class allows a custom compiler warning to be displayed.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"arguments":[["message",{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Warn"},{"children":[],"comments":"The Fail type class is part of the custom type errors feature. To provide\na custom type error when someone tries to use a particular instance,\nwrite that instance out with a Fail constraint.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"arguments":[["message",{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}]],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Fail"},{"children":[],"comments":"`Doc` is the kind of type-level documents.\n\nThis kind is used with the `Fail` and `Warn` type classes.\nBuild up a `Doc` with `Text`, `Quote`, `QuoteLabel`, `Beside`, and `Above`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Doc"},{"children":[],"comments":"The Text type constructor makes a Doc from a Symbol\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Text"},{"children":[],"comments":"The Quote type constructor renders any concrete type as a Doc\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":{"identifier":"k","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Quote"},{"children":[],"comments":"The `QuoteLabel` type constructor will produce a `Doc` when given a `Symbol`. When the resulting `Doc` is rendered\nfor a `Warn` or `Fail` constraint, a syntactically valid label will be produced, escaping with quotes as needed.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Symbol"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"QuoteLabel"},{"children":[],"comments":"The Beside type constructor combines two Docs horizontally\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Beside"},{"children":[],"comments":"The Above type constructor combines two Docs vertically\nin a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim","TypeError"],"Doc"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Above"}],"name":"Prim.TypeError","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Prim/docs.json b/tests/purs/publish/basic-example/output/Prim/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Prim/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The `Prim` module is embedded in the PureScript compiler in order to provide compiler support for certain types &mdash; for example, value literals, or syntax sugar. It is implicitly imported unqualified in every module except those that list it as a qualified import.\n\n`Prim` does not include additional built-in types and kinds that are defined deeper in the compiler such as Type wildcards (e.g. `f :: _ -> Int`) and Quantified Types. Rather, these are documented in [the PureScript language reference](https://github.com/purescript/documentation/blob/master/language/Types.md).\n","declarations":[{"children":[],"comments":"A function, which takes values of the type specified by the first type\nparameter, and returns values of the type specified by the second.\nIn the JavaScript backend, this is a standard JavaScript Function.\n\nThe type constructor `(->)` is syntactic sugar for this type constructor.\nIt is recommended to use `(->)` rather than `Function`, where possible.\n\nThat is, prefer this:\n\n    f :: Number -> Number\n\nto either of these:\n\n    f :: Function Number Number\n    f :: (->) Number Number\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Function"},{"children":[],"comments":"An Array: a data structure supporting efficient random access. In\nthe JavaScript backend, values of this type are represented as JavaScript\nArrays at runtime.\n\nConstruct values using literals:\n\n    x = [1,2,3,4,5] :: Array Int\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Array"},{"children":[],"comments":"The type of records whose fields are known at compile time. In the\nJavaScript backend, values of this type are represented as JavaScript\nObjects at runtime.\n\nThe type signature here means that the `Record` type constructor takes\na row of concrete types. For example:\n\n    type Person = Record (name :: String, age :: Number)\n\nThe syntactic sugar with curly braces `{ }` is generally preferred, though:\n\n    type Person = { name :: String, age :: Number }\n\nThe row associates a type to each label which appears in the record.\n\n_Technical note_: PureScript allows duplicate labels in rows, and the\nmeaning of `Record r` is based on the _first_ occurrence of each label in\nthe row `r`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Record"},{"children":[],"comments":"A double precision floating point number (IEEE 754).\n\nConstruct values of this type with literals.\nNegative literals must be wrapped in parentheses if the negation sign could be mistaken\nfor an infix operator:\n\n    x = 35.23 :: Number\n    y = -1.224e6 :: Number\n    z = exp (-1.0) :: Number\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Number"},{"children":[],"comments":"A 32-bit signed integer. See the `purescript-integers` package for details\nof how this is accomplished when compiling to JavaScript.\n\nConstruct values of this type with literals. Hexadecimal syntax is supported.\nNegative literals must be wrapped in parentheses if the negation sign could be mistaken\nfor an infix operator:\n\n    x = -23 :: Int\n    y = 0x17 :: Int\n    z = complement (-24) :: Int\n\nIntegers used as types are considered to have kind `Int`.\nUnlike value-level `Int`s, which must be representable as a 32-bit signed integer,\ntype-level `Int`s are unbounded. Hexadecimal support is also supported at the type level.\n\n    type One :: Int\n    type One = 1\n    \n    type Beyond32BitSignedInt :: Int\n    type Beyond32BitSignedInt = 2147483648\n    \n    type HexInt :: Int\n    type HexInt = 0x17\n\nNegative integer literals at the type level must be\nwrapped in parentheses if the negation sign could be mistaken for an infix operator.\n\n    type NegativeOne = -1\n    foo :: Proxy (-1) -> ...\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Int"},{"children":[],"comments":"A String. As in JavaScript, String values represent sequences of UTF-16\ncode units, which are not required to form a valid encoding of Unicode\ntext (for example, lone surrogates are permitted).\n\nConstruct values of this type with literals, using double quotes `\"`:\n\n    x = \"hello, world\" :: String\n\nMulti-line string literals are also supported with triple quotes (`\"\"\"`):\n\n    x = \"\"\"multi\n       line\"\"\"\n\nAt the type level, string literals represent types with kind `Symbol`.\nThese types will have kind `String` in a future release:\n\n    type Hello :: Symbol\n    type Hello = \"Hello, world\"\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"String"},{"children":[],"comments":"A single character (UTF-16 code unit). The JavaScript representation is a\nnormal `String`, which is guaranteed to contain one code unit. This means\nthat astral plane characters (i.e. those with code point values greater\nthan `0xFFFF`) cannot be represented as `Char` values.\n\nConstruct values of this type with literals, using single quotes `'`:\n\n    x = 'a' :: Char\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Char"},{"children":[],"comments":"A JavaScript Boolean value.\n\nConstruct values of this type with the literals `true` and `false`.\n\nThe `True` and `False` types defined in `Prim.Boolean` have this type as their kind.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Boolean"},{"children":[],"comments":"The Partial type class is used to indicate that a function is *partial,*\nthat is, it is not defined for all inputs. In practice, attempting to use\na partial function with a bad input will usually cause an error to be\nthrown, although it is not safe to assume that this will happen in all\ncases. For more information, see\n[purescript-partial](https://pursuit.purescript.org/packages/purescript-partial/).\n","info":{"arguments":[],"declType":"typeClass","fundeps":[],"superclasses":[]},"kind":null,"sourceSpan":null,"title":"Partial"},{"children":[],"comments":"`Type` is the kind of all proper types: those that classify value-level terms.\nFor example the type `Boolean` has kind `Type`; denoted by `Boolean :: Type`.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Type"},{"children":[],"comments":"`Constraint` is the kind of type class constraints.\nFor example, a type class declaration like this:\n\n    class Semigroup a where\n      append :: a -> a -> a\n\nhas the kind signature:\n\n    class Semigroup :: Type -> Constraint\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Constraint"},{"children":[],"comments":"`Symbol` is the kind of type-level strings.\n\nConstruct types of this kind using the same literal syntax as documented\nfor strings.\n\n    type Hello :: Symbol\n    type Hello = \"Hello, world\"\n\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Symbol"},{"children":[],"comments":"`Row` is the kind constructor of label-indexed types which map type-level strings to other types.\nThe most common use of `Row` is `Row Type`, a row mapping labels to basic (of kind `Type`) types:\n\n    type ExampleRow :: Row Type\n    type ExampleRow = ( name :: String, values :: Array Int )\n\nThis is the kind of `Row` expected by the `Record` type constructor.\nMore advanced row kinds like `Row (Type -> Type)` are used much less frequently.\n","info":{"declType":"externData","kind":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"roles":[]},"kind":null,"sourceSpan":null,"title":"Row"}],"name":"Prim","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Record.Unsafe/docs.json b/tests/purs/publish/basic-example/output/Record.Unsafe/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Record.Unsafe/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The functions in this module are highly unsafe as they treat records like\nstringly-keyed maps and can coerce the row of labels that a record has.\n\nThese function are intended for situations where there is some other way of\nproving things about the structure of the record - for example, when using\n`RowToList`. **They should never be used for general record manipulation.**\n","declarations":[{"children":[],"comments":"Checks if a record has a key, using a string for the key.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"r1","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r1","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[10,70],"name":"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.purs","start":[10,1]},"title":"unsafeHas"},{"children":[],"comments":"Unsafely gets a value from a record, using a string for the key.\n\nIf the key does not exist this will cause a runtime error elsewhere.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"r","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[15,64],"name":"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.purs","start":[15,1]},"title":"unsafeGet"},{"children":[],"comments":"Unsafely sets a value on a record, using a string for the key.\n\nThe output record's row is unspecified so can be coerced to any row. If the\noutput type is incorrect it will cause a runtime error elsewhere.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"r1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r2","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r1","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r2","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[21,82],"name":"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.purs","start":[21,1]},"title":"unsafeSet"},{"children":[],"comments":"Unsafely removes a value on a record, using a string for the key.\n\nThe output record's row is unspecified so can be coerced to any row. If the\noutput type is incorrect it will cause a runtime error elsewhere.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"r1","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"r2","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r1","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[],"contents":"r2","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[27,78],"name":"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.purs","start":[27,1]},"title":"unsafeDelete"}],"name":"Record.Unsafe","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Safe.Coerce/docs.json b/tests/purs/publish/basic-example/output/Safe.Coerce/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Safe.Coerce/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"Coerce a value of one type to a value of some other type, without changing\nits runtime representation. This function behaves identically to\n`unsafeCoerce` at runtime. Unlike `unsafeCoerce`, it is safe, because the\n`Coercible` constraint prevents any use of this function from compiling\nunless the compiler can prove that the two types have the same runtime\nrepresentation.\n\nOne application for this function is to avoid doing work that you know is a\nno-op because of newtypes. For example, if you have an `Array (Conj a)` and you\nwant an `Array (Disj a)`, you could do `Data.Array.map (un Conj >>> Disj)`, but\nthis performs an unnecessary traversal of the array, with O(n) cost.\n`coerce` accomplishes the same with only O(1) cost:\n\n```purescript\nmapConjToDisj :: forall a. Array (Conj a) -> Array (Disj a)\nmapConjToDisj = coerce\n```\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"constraintClass":[["Prim","Coerce"],"Coercible"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[26,46],"name":"../../../support/bower_components/purescript-safe-coerce/src/Safe/Coerce.purs","start":[26,1]},"title":"coerce"}],"name":"Safe.Coerce","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Type.Proxy/docs.json b/tests/purs/publish/basic-example/output/Type.Proxy/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Type.Proxy/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":"The `Proxy` type and values are for situations where type information is\nrequired for an input to determine the type of an output, but where it is\nnot possible or convenient to provide a _value_ for the input.\n\nA hypothetical example: if you have a class that is used to handle the\nresult of an AJAX request, you may want to use this information to set the\nexpected content type of the request, so you might have a class something\nlike this:\n\n``` purescript\nclass AjaxResponse a where\n  responseType :: a -> ResponseType\n  fromResponse :: Foreign -> a\n```\n\nThe problem here is `responseType` requires a value of type `a`, but we\nwon't have a value of that type until the request has been completed. The\nsolution is to use a `Proxy` type instead:\n\n``` purescript\nclass AjaxResponse a where\n  responseType :: Proxy a -> ResponseType\n  fromResponse :: Foreign -> a\n```\n\nWe can now call `responseType (Proxy :: Proxy SomeContentType)` to produce\na `ResponseType` for `SomeContentType` without having to construct some\nempty version of `SomeContentType` first. In situations like this where\nthe `Proxy` type can be statically determined, it is recommended to pull\nout the definition to the top level and make a declaration like:\n\n``` purescript\n_SomeContentType :: Proxy SomeContentType\n_SomeContentType = Proxy\n```\n\nThat way the proxy value can be used as `responseType _SomeContentType`\nfor improved readability. However, this is not always possible, sometimes\nthe type required will be determined by a type variable. As PureScript has\nscoped type variables, we can do things like this:\n\n``` purescript\nmakeRequest :: URL -> ResponseType -> Aff _ Foreign\nmakeRequest = ...\n\nfetchData :: forall a. (AjaxResponse a) => URL -> Aff _ a\nfetchData url = fromResponse <$> makeRequest url (responseType (Proxy :: Proxy a))\n```\n","declarations":[{"children":[{"comments":null,"info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":{"end":[53,21],"name":"../../../support/bower_components/purescript-prelude/src/Type/Proxy.purs","start":[53,14]},"title":"Proxy"}],"comments":"Proxy type for all `kind`s.\n","info":{"dataDeclType":"data","declType":"data","roles":["Phantom"],"typeArguments":[["a",null]]},"kind":{"keyword":"data","kind":{"annotation":[],"contents":{"identifier":"k","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"k","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"sourceSpan":{"end":[53,21],"name":"../../../support/bower_components/purescript-prelude/src/Type/Proxy.purs","start":[53,1]},"title":"Proxy"}],"name":"Type.Proxy","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Unsafe.Coerce/docs.json b/tests/purs/publish/basic-example/output/Unsafe.Coerce/docs.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/Unsafe.Coerce/docs.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"comments":null,"declarations":[{"children":[],"comments":"A _highly unsafe_ function, which can be used to persuade the type system that\nany type is the same as any other type. When using this function, it is your\n(that is, the caller's) responsibility to ensure that the underlying\nrepresentation for both types is the same.\n\nBecause this function is extraordinarily flexible, type inference\ncan greatly suffer. It is highly recommended to define specializations of\nthis function rather than using it as-is. For example:\n\n```purescript\nfromBoolean :: Boolean -> Json\nfromBoolean = unsafeCoerce\n```\n\nThis way, you won't have any nasty surprises due to the inferred type being\ndifferent to what you expected.\n\nAfter the v0.14.0 PureScript release, some of what was accomplished via\n`unsafeCoerce` can now be accomplished via `coerce` from\n`purescript-safe-coerce`. See that library's documentation for more\ncontext.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[27,50],"name":"../../../support/bower_components/purescript-unsafe-coerce/src/Unsafe/Coerce.purs","start":[27,1]},"title":"unsafeCoerce"}],"name":"Unsafe.Coerce","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/cache-db.json b/tests/purs/publish/basic-example/output/cache-db.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/cache-db.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"Control.Applicative":{"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs":["2022-08-18T20:04:00Z","5889c8a23c34d2d9c7d1fe41df1512314055fafda79900099b37a76451fb6394dac06633caf5c206c432817a9c07b892b18c3b99d1013a298acc85a579aee2f1"]},"Control.Apply":{"../../../support/bower_components/purescript-prelude/src/Control/Apply.js":["2022-08-18T20:04:00Z","73ee829e5dfad80f1d5f957d0e52b1d069ea798919d608b4733cedda4736681ec26d7e33501428966bf213b8a344c1272f7658867780c7237baf90da4c9d5ad3"],"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs":["2022-08-18T20:04:00Z","524e797c42f16dbc375aa2403a4867a5744116d9302bda790333251ccf88d773e079fb8c3af1f87eccdc0c0bbf682b932a48506ca5f51ef441832177fafd4eb0"]},"Control.Bind":{"../../../support/bower_components/purescript-prelude/src/Control/Bind.js":["2022-08-18T20:04:00Z","abbbecd9697ae2109a9b74f70bfce37c0589e0d99b10e090660e1c76a491744c84fd459c53172256c70cdaffde3f0dc1abe0464fa32b977cf71e789425ca8bfe"],"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs":["2022-08-18T20:04:00Z","27f217ea2d5e4ab2745ad05b6d0aa36ee8809dc9d5c22162f722b2f003cf140bb18747f158daeca469a1083b7b054f9a6a9681d092598b3ea25cada7fe510d75"]},"Control.Category":{"../../../support/bower_components/purescript-prelude/src/Control/Category.purs":["2022-08-18T20:04:00Z","6431719d022f6d4230f338935381a7e116a18cdf80c67bdf76d87a7624518bc9fd1e4adfe45c8a59d77f07caf7c8e9faae741e99fada42455143c4fb924e7988"]},"Control.Monad":{"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs":["2022-08-18T20:04:00Z","5d13918b1f360fb201125c334399566fdef398f1b44af0754cb261b6e514481b26a0d4ad892944d4a52d513c41a20702d9973be000d9e2436c4fb48940cc07ca"]},"Control.Semigroupoid":{"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs":["2022-08-18T20:04:00Z","f5b1e9fdd81471d37f763b7fff8bd94f2111fd9ad6092bc925e409d5c69261860045230cde5c95ebbb3141acce54372bcf4d01c9b044fd59959822c9576135e8"]},"Data.Boolean":{"../../../support/bower_components/purescript-prelude/src/Data/Boolean.purs":["2022-08-18T20:04:00Z","aa81cf83948d1c45051dcfb835b0caef7a8ed8a39c58d8126f4efde1973880dbcd169d36bbe8c82a62586c386810bf0824f018674a93c606e43bc451fb6c3819"]},"Data.BooleanAlgebra":{"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs":["2022-08-18T20:04:00Z","464f2df7f5bc3fc5e64cb0462c841f93fa2a609545e10f0adce637185e345aa45eed2a7e164ba648bb947168279c999ef8cd9f5dab9fce9af3b9329a8829b971"]},"Data.Bounded":{"../../../support/bower_components/purescript-prelude/src/Data/Bounded.js":["2022-08-18T20:04:00Z","8bfa62b2e886ce6d58793d840513c68cefc1fa0c4a15a5e6a0c0ee5d607fea425f8080365c0f3f421116c4362eba447617cd65a221ee1e4cc0a75610752d3b75"],"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs":["2022-08-18T20:04:00Z","36762aa05b71843e1d2f23cc64b1a17ea3acf91745de39e8723a04f3cc12f50c83e6a9b8a58c0463eaed0e93dfe3112e1f896130bab0660a5a009391f00ed468"]},"Data.Bounded.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs":["2022-08-18T20:04:00Z","15f4f3499dd9c2a1f37345357db2f131cc57e37a4ddfaa8497dabd3d123abd8b9670bdd3910b84b6c44c8b63bf1873af783adb1edc8455985f244b6ecbef733b"]},"Data.CommutativeRing":{"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs":["2022-08-18T20:04:00Z","c8bf53bf06454a74ba3a605d100b59bb5ba9111dd20e073713422c080075555b653bcaddde078d55130e737de30ba336920a099a6016fd4158af88b1f430b631"]},"Data.DivisionRing":{"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs":["2022-08-18T20:04:00Z","1f3c74ecd87798ace30371f036ef1590f7e4dbc5be05f51162f9b3700d61c0befd6a5b53ace34626103e500043de3b67225de2c442841106f6d8960658355aae"]},"Data.Eq":{"../../../support/bower_components/purescript-prelude/src/Data/Eq.js":["2022-08-18T20:04:00Z","6718a356e77f3fe29c3f353f02fd94583b4edf5a0a0d7bdfdbcb046e7ef3440781aaa466ee88f12be6a72f274eb9c51d4d051673f4893fc408e9053bb8d84368"],"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs":["2022-08-18T20:04:00Z","65598d7093548c9848e1c661bb778ebd402f09b4584570c09082d765997056b335bf0f05397cd788c44bb2f00b3bd2115cba2ed45033ade9ac40d91efd64301d"]},"Data.Eq.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs":["2022-08-18T20:04:00Z","88d9841c3e55b1063721bc8ff168aa8b53cd3581a8c3ffee6ed71a96ba4d2d20b7b454cb0e7f13b2fa7a6bcaf4ca0dfc609ce624f5ad74eece1e13a93b0a121d"]},"Data.EuclideanRing":{"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.js":["2022-08-18T20:04:00Z","9bf37abbb8d5c826e2152f62c99251e9cfeac8226ead81262527a2c544765336b6a0a8df731664d1b7d7804ad821ddfb0bd2c58d91d61fea6232d6adaeb6fc69"],"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs":["2022-08-18T20:04:00Z","252c8162d273ea69e96619d760b48f7302ad048ed2bdd542695fbf0489948d24369b2bd40addd7fa505e810cf411727fe9fd57546a3011ebe1fa3c534beac414"]},"Data.Field":{"../../../support/bower_components/purescript-prelude/src/Data/Field.purs":["2022-08-18T20:04:00Z","21c8a682ad74b9389e1c538ca1dbc5cc4da34b13945a1bd11812631f8f56e723e65f9452eba5b43ea8209f88c57e8566529667673b6b78ade1a08350a28b04cc"]},"Data.Function":{"../../../support/bower_components/purescript-prelude/src/Data/Function.purs":["2022-08-18T20:04:00Z","42320940aa4cdbab54308acc9ad8eac48cb3facf1f695eeb32c8473bdf31e6d51e9d689bd256c833cedd3cf40882c484153f56e8582bfc1353cc0f3b7867aa0f"]},"Data.Functor":{"../../../support/bower_components/purescript-prelude/src/Data/Functor.js":["2022-08-18T20:04:00Z","889e7781cb01bcb3007c8400d844b250905a7cc893d0391a09c2f907c8993271b0daf081548206d4c5a3948fdc7a51df5a99c6fe38c61a90ccdcb38f22886ae7"],"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs":["2022-08-18T20:04:00Z","077d9d6d3e754807e5200b970988daf12894942995bb7f8698c0e0a2d08b64842dc5257efe088c045d7d0a6de2a10cb6c58b976b26243f66f69d0fa9791f60e7"]},"Data.Generic.Rep":{"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs":["2022-08-18T20:04:00Z","69c6cac0ae8035b7a0bad28c1fb8c0c0d99bc93087392f5dbebac6a30bca3b5fa352741f93f432b7aa4c617e1f23d59939a69c716775e84375e112b4bb9175d1"]},"Data.HeytingAlgebra":{"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.js":["2022-08-18T20:04:00Z","3603479b96cd22a9b312ef922b95d5b342ecd8d4b1b8984a15fcfa64b92ec66128f14fdc795c2c525c9b6e6912934f2ea542df9f30b3caac3bbb085ba3326265"],"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs":["2022-08-18T20:04:00Z","d8942636d4f1804c94eb7527b48f48f500843d34e2ec0b45515f4d5c836ce4437806feb4a603735f1a799243f244a72c6fda218ffe5d58f7f0cbbcbfadb01bbd"]},"Data.HeytingAlgebra.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs":["2022-08-18T20:04:00Z","ea49a37bf16af73cb930d0eb573bca8cc8e63de0a796c504f531f05d503976a59f464fa5a039a2ae9b486c9ba70857008bfb06acaaeaad6ee0f9f429355043e2"]},"Data.Monoid":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs":["2022-08-18T20:04:00Z","172ecdf1da579ac35b44cb9d87424b7bb45f27b2f49a0e51be34cc1d2863a15929436321b8ed46059601b3ba171053b4129067066be0596da42607d697d8d484"]},"Data.Monoid.Additive":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs":["2022-08-18T20:04:00Z","514e26851127fb9b52c618a36f17758513d9a7ea6724866b208e2c2447c3c3b3a9a18218b715b765e5e1e00908e2ebc0d9f2e67171ab3e46543a01508b54de67"]},"Data.Monoid.Conj":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs":["2022-08-18T20:04:00Z","441eb08d322aa39654f68fe39676ba5fe470252adc4da087c590245ff7b0b624885c57ade6e66f24485862873767198678a219afbd7c2fc68f2ca59978d7d9c2"]},"Data.Monoid.Disj":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs":["2022-08-18T20:04:00Z","f38cea70c5a7216b6b17c796dfbc8b08d9f05bed22d81d3784322f9f06f127435b4c9009a2027c24efc998c781796b9007bc70bc3bd1eee935b1a9695077bc7a"]},"Data.Monoid.Dual":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs":["2022-08-18T20:04:00Z","54058218c4c5323d42e95d54a1c64b9e2ded8afdaeef2f846ef123bd4fd6772551e2158a6a9802ca327bbc4fb995f4fd5d416fd59c7a6efc8f8fe9bc5e7dc709"]},"Data.Monoid.Endo":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs":["2022-08-18T20:04:00Z","543f16c8df42353334deddd7e25a58340aaa3f4a902a997d6b08e3128ca0afb82b3ac720e8ca8d4475cfc063906df1439afd3f2e22f7684aeb9ee0bc2992e774"]},"Data.Monoid.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs":["2022-08-18T20:04:00Z","9e2ef0cf0469c1e798f8767cb472ee1b0103dfd6b08ed0a777c89d5043358b70cf14c2784ea59f05795f648daf80e11b2150fa89a05bc8c0afa6dafeb2fc09ac"]},"Data.Monoid.Multiplicative":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs":["2022-08-18T20:04:00Z","f0c40f939ed3a3f00712fc7485926733668101c201e5d57e19d72ce6be84455b7b2d7360d747154a9d071df9b72e4e5ad2ac2a36db093a1b702fed4e6f4de9e3"]},"Data.NaturalTransformation":{"../../../support/bower_components/purescript-prelude/src/Data/NaturalTransformation.purs":["2022-08-18T20:04:00Z","6b9fc42ec524a517d464dea99867c64345cdbcbada4260a772373a956961ad1c9a4a3a4f8ed4a0c7c7f3e36120068954141841c5d6bdc4e5898ea06435104bb7"]},"Data.Newtype":{"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs":["2022-04-27T15:04:33Z","4289a67b60c9760f41b6fb86b71bb0bb2c576b279ae447be7fe4c3ff408ea4705ca17522647bcd8da582ef646a4abfd53fc3310d4d9d6c68816a8ccd480140be"]},"Data.Ord":{"../../../support/bower_components/purescript-prelude/src/Data/Ord.js":["2022-08-18T20:04:00Z","d3f620d4e07a9ce41745d2df0c43701dc41726e4be601b790bb054089ca52d97380299b90fe88f166e2195d76c4cbe195d941e8619fd2d14242a6a347881b1a9"],"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs":["2022-08-18T20:04:00Z","f0ca6f6131e2699584e55846fb9f4300b778c12f39f0c5a19286081c39c537c1a511c69d01ca6d7216776c73daeeced9ae0b6e1281d4b2e39abb4cc5432e6b75"]},"Data.Ord.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs":["2022-08-18T20:04:00Z","d566cfa79ec03e335f632d3edc3b913081583188d8496897c1b0904c1895525caeb5b0464b76d40ae5ef79e5c7b516ad061c1d98aa6e1c649f555be4c839087e"]},"Data.Ordering":{"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs":["2022-08-18T20:04:00Z","321b8de9b25c2616a3dbc6bff2e2def1cf7592ad54e575bd2b62d440d5dd88d7b5332f6c68fc010424e36ac13d61b5bcaadcf619ff940c667360b2c102f6e2af"]},"Data.Reflectable":{"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.js":["2022-08-18T20:04:00Z","1bbaef3b7bb472cbc13eb30d9a75f2d580d5950fe692a3e137322558a651d0352f8a7499538028404a611afecde17f551b7cbc4030bdaf0b50e6828362cf29bd"],"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs":["2022-08-18T20:04:00Z","02beca227031091fd31673ff64153c2f84ba22c61f362acc88411643233fe91d8cabf6206319785f7b910d8dff7c81528ca7e05048e284bfc720e71f804f7a6c"]},"Data.Ring":{"../../../support/bower_components/purescript-prelude/src/Data/Ring.js":["2022-08-18T20:04:00Z","bce8767b39bf1d9af8182f80f91e376db07ae8912b991fcea6eaf37900f91c6b6ede6fb874c40ff5b3d40fc6a893468d0f0cb31106f6188ca52514ae0a081da6"],"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs":["2022-08-18T20:04:00Z","4e727f1f786ced8ce8202805713a9a2810c6ef9522694535c219ce22f66e032ca374163c82db137dd7d2ded6ae4dc2786ee8b6efd1df810d5cbda9c7e2c0832e"]},"Data.Ring.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs":["2022-08-18T20:04:00Z","8c94b1a5765b99950600e690e01e3da65cd7e43fe78f651f8531c45d41775572af47e62f21705857c82ae52251626c34f0f41180ee0563115f749c7bc0459324"]},"Data.Semigroup":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.js":["2022-08-18T20:04:00Z","fb416511575b93baf1081317aba42e97da52fdb724c07110a05c360e5254528f54715a47fa22ed4298bbdfb62c8641c8ea5ef92af9a259d51164cf541026fabc"],"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs":["2022-08-18T20:04:00Z","43c3fbd4ab0a7a5346bdc69ce26ad3e6143f1f0e92bf8e7601af43d2ad68cfe4080411029ba3a9f29592f75e139a8fb923e67237b8e1cee3024c54b32ccf0b5d"]},"Data.Semigroup.First":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs":["2022-08-18T20:04:00Z","8ff357056284af9050954e7695babcc76f5f632019b66f635a49502170508a37b2cb20a2e863f022bf077726480d2cc32951fb910c80559806e50830f25e884e"]},"Data.Semigroup.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs":["2022-08-18T20:04:00Z","8c07803971e03a3c3d4a617198eae5a3e825c411fd17af68eee57571717a2301eaf5ec5bd34bfddf14da1f1c40d780ab9538d02f22d1d19117135388c848ca89"]},"Data.Semigroup.Last":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs":["2022-08-18T20:04:00Z","75b3660341f9c0570031d2304c83eb8592098e2d96577c030ae969b3b958d00b21234c2c836377e7b338e4323fa4aa0c97a4a8abb7ed49e2741907a411eb0b08"]},"Data.Semiring":{"../../../support/bower_components/purescript-prelude/src/Data/Semiring.js":["2022-08-18T20:04:00Z","71c1f69848adaf5667acc7668bb53b42a14dd64f559e72d88ae879f123aa9d5892debb1758067b8c48bfcdbbd7392e2e9ea0e5d18603ab62dbdde5032662cf33"],"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs":["2022-08-18T20:04:00Z","70fe8b0c9eb461a6058b6c89ad182fb99d4e930f158b015a386ee67ece2445b5e7aba5e539dd7377822de1b045b80d1e439f191a2274c6e95c7fb3dba535d8c0"]},"Data.Semiring.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs":["2022-08-18T20:04:00Z","e1aeb61208e3b96999f07cc41307d50fa8025c2f688e9dc24d7286933a11cc1ec253375e10e25fb578801bcda7b18b7342bb13275f4ca72478a2aff9ea872799"]},"Data.Show":{"../../../support/bower_components/purescript-prelude/src/Data/Show.js":["2022-08-18T20:04:00Z","588e533a8d2dce9eb3815e58e38fe06ac7758adb50295d4325c47db26031d0ea48cb341d5e3d7caaeae40f4d95a9c3c5381feba3a50653d1a76e3835b0628f0d"],"../../../support/bower_components/purescript-prelude/src/Data/Show.purs":["2022-08-18T20:04:00Z","b52834da5151dffab06693e15efb93608a43ab7866901f86ee47191f085fade2d7ebbad800aff8ad7d7171d349e312bfc01dd4e8cad4eb6c12eacd50d9381764"]},"Data.Show.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.js":["2022-08-18T20:04:00Z","f8b9a3c651ceb9e8f2ee15ae532ecd371794b4e9f3b14eb0508656c1ae853654d7e3d3c719a9a98f0dcbc81df3b03266c05d3bc01c9b62d6d8ce29d4794e4b1b"],"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs":["2022-08-18T20:04:00Z","37b5a1168cd88f5f6f2d2a584cfe2c69e326b9f3e62291ec607c6e4a12da144450088fe65e95cbd04204d9c616a04696b5b3d0d7e444e8628b4a1eb3597c534d"]},"Data.Symbol":{"../../../support/bower_components/purescript-prelude/src/Data/Symbol.js":["2022-08-18T20:04:00Z","c980adfe8e297bfe8e257903de3ac13f5675c6f52ed95e8c2786fcacc52adde10b5de56c9432859c3c7c8f51d1866f2e8d4a961d60e1bff656def39e3b3cdcf7"],"../../../support/bower_components/purescript-prelude/src/Data/Symbol.purs":["2022-08-18T20:04:00Z","579409ca0036164a1a0534b266cc1c90de7b020ecea470cdedf0a97cc34ae1f25ab441df9789798dc30f6a4c8f6c6368c79dc5523d9de336e57dcc6325127cb2"]},"Data.Unit":{"../../../support/bower_components/purescript-prelude/src/Data/Unit.js":["2022-08-18T20:04:00Z","d7185d75aa1f2fe353e4e200ab4181472e354d6295cb2e6587a56636b1bc733be77b2f5616b20275fe7be0138a6442b2979864b1b234a813f8d9237baa4cd5f3"],"../../../support/bower_components/purescript-prelude/src/Data/Unit.purs":["2022-08-18T20:04:00Z","425d50d748941435bf7f4d6b61769e2b0931973280ba6dd91dcca3f963cc9223b2a7ccd5827611182348041c0813b3be828e2dacc54933ddc152d6e50f7f2f3d"]},"Data.Void":{"../../../support/bower_components/purescript-prelude/src/Data/Void.purs":["2022-08-18T20:04:00Z","28ae6f4ecd4ee9a07dc5c034f189a8740a9e14bef332d6bab73b8e3b2ea51ed2bec88d84862ff4cd989e671be324b019282a2678a6d73e59f05af414705bd47e"]},"Effect":{"../../../support/bower_components/purescript-effect/src/Effect.js":["2022-04-27T14:04:24Z","9683b917c04f50b5b8a41d8294b101d7787cd0a742840e6f05ec143f881bfb51807a2efd29a9296def2676e7c1860352f3d89f78f9205567575c5040f790da32"],"../../../support/bower_components/purescript-effect/src/Effect.purs":["2022-04-27T14:04:24Z","25ea461900466a6aade8a56c20921d46eb037a71efb12c4265dd378e760843e5793efb9f7cb47322511459136d9d4ecd6d09e5a089a432d96ef4af4530ad8e8d"]},"Effect.Class":{"../../../support/bower_components/purescript-effect/src/Effect/Class.purs":["2022-04-27T14:04:24Z","47e0114539e25826ffba341faf99133ed2499027f0955fa606d563d3504c6b41dc9d425dfa619c0c83b5fc2ab8dbb3c1bf2166b5980c5674fb93560c9b80d585"]},"Effect.Class.Console":{"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs":["2023-10-08T17:07:02Z","83dd2086be201a053908c2f6083c342c7ac3dd1eedd16d28eda405f97fe51c4d50363e837c79a95aef78de222d2fcf579c19fed4b5c3ba9f16ea7e537912a996"]},"Effect.Console":{"../../../support/bower_components/purescript-console/src/Effect/Console.js":["2023-10-08T17:07:02Z","b3d1b0aacf58d500207502e4fda74bf6ee203c3650c8ccc061eaafcac512ce76ee1347aa7d44630a1420013fd7ae262d5b7755b216002125d9c58d29ee84ec03"],"../../../support/bower_components/purescript-console/src/Effect/Console.purs":["2023-10-08T17:07:02Z","44ab0ee3661fb4d26d5cbeb22d2dcf111b3a4391c9f20c0ef906a27714d8a90524bd22eb1351c2795388f66241983242089b58377a8ea0723f17b259ace592c0"]},"Effect.Uncurried":{"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.js":["2022-04-27T14:04:24Z","4c6c5db78b72ff3b84623d894b05dd916cc0732dc08d1fd45d8b0768983fdd7377b7299add3c70475459d0e190af99e2176e4c17a8cfbf295c675456bd5ba7d2"],"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs":["2022-04-27T14:04:24Z","a948cb1cab11f5019fe20dd697b5c6e248c3b29c7ab332c2cb9d792cfcb58021a77c0f4f71e1c8d7c0b3b9cb18bd1497a0d2f40680926390f3303ecb1fe25beb"]},"Effect.Unsafe":{"../../../support/bower_components/purescript-effect/src/Effect/Unsafe.js":["2022-04-27T14:04:24Z","e66a1117e55534d61b7cd8e1859b54ef97446e0374116867383d2027bd85b73e510cbd1e4e74067b740fffb66c11e243af8d0976b2dc225d9865d882486cccdd"],"../../../support/bower_components/purescript-effect/src/Effect/Unsafe.purs":["2022-04-27T14:04:24Z","c112c559df0f177472e96655b09165d5535f68caddc2b419b4cdfe796af19b962b0659cb609a2ce501002da7de34e66592b5491ebe6f538824c2db8a1e800ea7"]},"Main":{"src/Main.purs":["2021-10-25T20:49:21Z","55bdd6dd11fb1679cb11793dd2996de21972f7aa53826557273bd649004f5907ff8cf6dff840718a12084c421529c9da7d70f698689d3923ab4ae3d608591c66"]},"Prelude":{"../../../support/bower_components/purescript-prelude/src/Prelude.purs":["2022-08-18T20:04:00Z","c67b6a882790c17476eb477da2cfc71dc4c26f297e7b4581b5ae9b0d08040ea7c7b55ed3afb3e824806e573ea4dd307eaa7cb49cfb2a756973b226ee1023e6fc"]},"Record.Unsafe":{"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.js":["2022-08-18T20:04:00Z","667d613a0e1265a710e98c9f6e64ff791b9e9b7227cdf699c3a25724077c02e42726c807c0387ca4484454fd853d5b41522bf2e048887f22a894413ef80cbb92"],"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.purs":["2022-08-18T20:04:00Z","af8a7c83127f5e61853ad0e572be799c04e321562a375d51ab133706ac6a6777e169b057f01a709ad7aae2d8c7a5ae8daa28eae8793c4fe92e2e8f0cfaecf870"]},"Safe.Coerce":{"../../../support/bower_components/purescript-safe-coerce/src/Safe/Coerce.purs":["2022-04-27T14:56:52Z","595abade13e21ed7893a92b338d9e7c7bf56e9067d51ca25c387d6d93a1c5542925f062e282602e89476a45501645c76dbd57eac31cc4e5c1cf341e2902beb89"]},"Type.Proxy":{"../../../support/bower_components/purescript-prelude/src/Type/Proxy.purs":["2022-08-18T20:04:00Z","333d0ae90b05098eada860ad476ed9e1eacd67d969dc1573c74375610cf8de22e85a358a7783a0a461d7ffa6fe322d8c3e90696be02555a02793ac99aba687f2"]},"Unsafe.Coerce":{"../../../support/bower_components/purescript-unsafe-coerce/src/Unsafe/Coerce.js":["2022-04-27T14:15:44Z","031c3187f7ce65110a359260041309506e1ff39a97b6eb22c9a8f2e5c14b35db87d509bb5929f245c5d80df6ccd6dadf83579ebe4ac46650acdfa34a493cfc0d"],"../../../support/bower_components/purescript-unsafe-coerce/src/Unsafe/Coerce.purs":["2022-04-27T14:15:44Z","04b214d9cbbf0c438bb2af4b25f8db5d04f247059241982f718c6d83322c3180f0eced0eb5c410860dcdb35650e9129a1cffe87f7279308cc4cf6c6570bba74f"]}}
diff --git a/tests/purs/publish/basic-example/output/package.json b/tests/purs/publish/basic-example/output/package.json
deleted file mode 100644
--- a/tests/purs/publish/basic-example/output/package.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"type":"module"}
diff --git a/tests/support/package-lock.json b/tests/support/package-lock.json
deleted file mode 100644
--- a/tests/support/package-lock.json
+++ /dev/null
@@ -1,260 +0,0 @@
-{
-  "name": "support",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "dependencies": {
-        "bower": "^1.8.8",
-        "glob": "^5.0.14",
-        "rimraf": "^2.5.2",
-        "source-map": "^0.7.3"
-      }
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-    },
-    "node_modules/bower": {
-      "version": "1.8.14",
-      "resolved": "https://registry.npmjs.org/bower/-/bower-1.8.14.tgz",
-      "integrity": "sha512-8Rq058FD91q9Nwthyhw0la9fzpBz0iwZTrt51LWl+w+PnJgZk9J+5wp3nibsJcIUPglMYXr4NRBaR+TUj0OkBQ==",
-      "bin": {
-        "bower": "bin/bower"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-    },
-    "node_modules/glob": {
-      "version": "5.0.15",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
-      "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
-      "dependencies": {
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "2 || 3",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-    },
-    "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/rimraf/node_modules/glob": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/source-map": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    }
-  },
-  "dependencies": {
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-    },
-    "bower": {
-      "version": "1.8.14",
-      "resolved": "https://registry.npmjs.org/bower/-/bower-1.8.14.tgz",
-      "integrity": "sha512-8Rq058FD91q9Nwthyhw0la9fzpBz0iwZTrt51LWl+w+PnJgZk9J+5wp3nibsJcIUPglMYXr4NRBaR+TUj0OkBQ=="
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-    },
-    "glob": {
-      "version": "5.0.15",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
-      "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
-      "requires": {
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "2 || 3",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-    },
-    "minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
-    },
-    "rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "requires": {
-        "glob": "^7.1.3"
-      },
-      "dependencies": {
-        "glob": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-          "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        }
-      }
-    },
-    "source-map": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    }
-  }
-}
