$ /nix/store/vzx1mi9c0xfadmsm9dhd83d005cb1qs9-coreutils-9.8/bin/timeout --kill-after=15s 7200s /nix/store/86n4l5yri6hys3zk2mwy2azcv9prqb8j-nix-2.31.4/bin/nix --extra-experimental-features nix-command --extra-experimental-features flakes --log-format internal-json build --no-link git+https://github.com/NorfairKing/cursor?ref=master&rev=b2e56d65881e2c0a2514b58fdcef3f68b32e0a0e#checks.x86_64-linux.nixpkgs-24_05 --print-build-logs warning: ignoring untrusted flake configuration setting 'extra-substituters'. Pass '--accept-flake-config' to trust it warning: ignoring untrusted flake configuration setting 'extra-trusted-public-keys'. Pass '--accept-flake-config' to trust it  Downloading cached lndir from https://cache.staging.nix-ci.com Downloading cached validity-0.12.0.2-doc from https://cache.staging.nix-ci.com Progress: 0 of 14 built, 1 of 19 downloaded from cache (1 downloading) Progress: 0 of 13 built, 2 of 19 downloaded from cache Downloading cached genvalidity-1.1.0.0-doc from https://cache.staging.nix-ci.com Downloading cached validity from https://cache.staging.nix-ci.com Downloading cached validity-containers-0.5.0.4-doc from https://cache.staging.nix-ci.com Downloading cached validity-text-0.3.1.3-doc from https://cache.staging.nix-ci.com Progress: 0 of 13 built, 3 of 19 downloaded from cache (3 downloading) Progress: 0 of 13 built, 4 of 19 downloaded from cache (2 downloading) Downloading cached genvalidity-containers-1.0.0.1-doc from https://cache.staging.nix-ci.com Downloading cached genvalidity-property-1.0.0.0-doc from https://cache.staging.nix-ci.com Progress: 0 of 13 built, 5 of 19 downloaded from cache (3 downloading) Downloading cached genvalidity from https://cache.staging.nix-ci.com Downloading cached validity-containers from https://cache.staging.nix-ci.com Progress: 0 of 12 built, 6 of 19 downloaded from cache (4 downloading) Downloading cached genvalidity-text-1.0.0.1-doc from https://cache.staging.nix-ci.com Downloading cached validity-text from https://cache.staging.nix-ci.com Progress: 0 of 12 built, 7 of 19 downloaded from cache (5 downloading) Progress: 0 of 12 built, 8 of 19 downloaded from cache (4 downloading) Progress: 0 of 12 built, 9 of 19 downloaded from cache (3 downloading) Progress: 0 of 11 built, 10 of 19 downloaded from cache (2 downloading) Building cursor-source Progress: 0 of 10 built (1 building), 11 of 19 downloaded from cache (1 downloading) Progress: 0 of 10 built (1 building), 12 of 19 downloaded from cache Downloading cached genvalidity-hspec-1.0.0.3-doc from https://cache.staging.nix-ci.com Downloading cached genvalidity-property from https://cache.staging.nix-ci.com Downloading cached genvalidity-text from https://cache.staging.nix-ci.com Downloading cached genvalidity-containers from https://cache.staging.nix-ci.com [cursor-source] Phase: setupCompilerEnvironmentPhase [cursor-source] Build with /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5. [cursor-source] Phase: unpackPhase [cursor-source] unpacking source archive /nix/store/qr40r9gasc3qyg92cxgyvj69jz7qw20y-cursor [cursor-source] source root is cursor [cursor-source] Phase: patchPhase [cursor-source] Phase: compileBuildDriverPhase Progress: 0 of 9 built (1 building), 13 of 19 downloaded from cache (3 downloading) Progress: 0 of 8 built (1 building), 14 of 19 downloaded from cache (2 downloading) [cursor-source] setupCompileFlags: -package-db=/build/tmp.0LXbxDzZjd/setup-package.conf.d -threaded [cursor-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.0LXbxDzZjd/Main.o ) Progress: 0 of 7 built (1 building), 15 of 19 downloaded from cache (1 downloading) Downloading cached genvalidity-hspec-optics-1.0.0.0-doc from https://cache.staging.nix-ci.com Progress: 0 of 7 built (1 building), 16 of 19 downloaded from cache (1 downloading) Downloading cached genvalidity-hspec from https://cache.staging.nix-ci.com [cursor-source] [2 of 2] Linking Setup Progress: 0 of 7 built (1 building), 17 of 19 downloaded from cache (1 downloading) Progress: 0 of 7 built (1 building), 18 of 19 downloaded from cache Downloading cached genvalidity-hspec-optics from https://cache.staging.nix-ci.com Progress: 0 of 6 built (1 building), 19 of 19 downloaded from cache [cursor-source] Phase: updateAutotoolsGnuConfigScriptsPhase [cursor-source] Phase: configurePhase [cursor-source] configureFlags: --verbose --prefix=/nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/share/doc/cursor-0.3.2.0 --with-gcc=gcc --package-db=/build/tmp.0LXbxDzZjd/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-option=-Wall --ghc-option=-Werror --extra-lib-dirs=/nix/store/zmi2nlx42h1qrs2v7yn142dq4zjq30im-ncurses-6.4/lib --extra-lib-dirs=/nix/store/gniy4ab9wcijxjpcciddgpzdwq3v3dnb-libffi-3.4.6/lib --extra-lib-dirs=/nix/store/jsizfglsm40vsjc81xnm3wa0rxshpnz0-elfutils-0.191/lib --extra-lib-dirs=/nix/store/s8q3rch0wd3shdnznz9bcj8mj6pvz1gr-gmp-with-cxx-6.3.0/lib [cursor-source] Using Parsec parser [cursor-source] Configuring cursor-0.3.2.0... [cursor-source] Dependency base <5: using base-4.18.2.1 [cursor-source] Dependency containers: using containers-0.6.7 [cursor-source] Dependency deepseq: using deepseq-1.4.8.1 [cursor-source] Dependency microlens: using microlens-0.4.13.1 [cursor-source] Dependency text: using text-2.0.2 [cursor-source] Dependency validity >=0.8.0.0: using validity-0.12.0.2 [cursor-source] Dependency validity-containers: using validity-containers-0.5.0.4 [cursor-source] Dependency validity-text: using validity-text-0.3.1.3 [cursor-source] Source component graph: component lib [cursor-source] Configured component graph: [cursor-source]  component cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-source]  include base-4.18.2.1 [cursor-source]  include containers-0.6.7 [cursor-source]  include deepseq-1.4.8.1 [cursor-source]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-source]  include text-2.0.2 [cursor-source]  include validity-0.12.0.2-AqvCHWoomQb7m5ThLeZJUF [cursor-source]  include validity-containers-0.5.0.4-HslGVSV6GkS7jwFislmzmK [cursor-source]  include validity-text-0.3.1.3-6Zok7jKKi6MH9yUmWvp5nD [cursor-source] Linked component graph: [cursor-source]  unit cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-source]  include base-4.18.2.1 [cursor-source]  include containers-0.6.7 [cursor-source]  include deepseq-1.4.8.1 [cursor-source]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-source]  include text-2.0.2 [cursor-source]  include validity-0.12.0.2-AqvCHWoomQb7m5ThLeZJUF [cursor-source]  include validity-containers-0.5.0.4-HslGVSV6GkS7jwFislmzmK [cursor-source]  include validity-text-0.3.1.3-6Zok7jKKi6MH9yUmWvp5nD [cursor-source]  Cursor.Forest=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Forest,Cursor.List=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.List,Cursor.List.NonEmpty=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.List.NonEmpty,Cursor.Map=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Map,Cursor.Map.KeyValue=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Map.KeyValue,Cursor.Simple.Forest=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Forest,Cursor.Simple.List.NonEmpty=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.List.NonEmpty,Cursor.Simple.Map=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Map,Cursor.Simple.Map.KeyValue=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Map.KeyValue,Cursor.Simple.Tree=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Tree,Cursor.Text=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Text,Cursor.TextField=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.TextField,Cursor.Tree=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree,Cursor.Tree.Base=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Base,Cursor.Tree.Collapse=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Collapse,Cursor.Tree.Delete=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Delete,Cursor.Tree.Demote=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Demote,Cursor.Tree.Draw=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Draw,Cursor.Tree.Insert=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Insert,Cursor.Tree.Movement=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Movement,Cursor.Tree.Promote=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Promote,Cursor.Tree.Swap=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Swap,Cursor.Tree.Types=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Types,Cursor.Types=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Types [cursor-source] Ready component graph: [cursor-source]  definite cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-source]  depends base-4.18.2.1 [cursor-source]  depends containers-0.6.7 [cursor-source]  depends deepseq-1.4.8.1 [cursor-source]  depends microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-source]  depends text-2.0.2 [cursor-source]  depends validity-0.12.0.2-AqvCHWoomQb7m5ThLeZJUF [cursor-source]  depends validity-containers-0.5.0.4-HslGVSV6GkS7jwFislmzmK [cursor-source]  depends validity-text-0.3.1.3-6Zok7jKKi6MH9yUmWvp5nD [cursor-source] Using Cabal-3.10.3.0 compiled by ghc-9.6 [cursor-source] Using compiler: ghc-9.6.5 [cursor-source] Using install prefix: [cursor-source] /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0 [cursor-source] Executables installed in: [cursor-source] /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0/bin [cursor-source] Libraries installed in: [cursor-source] /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-source] Dynamic Libraries installed in: [cursor-source] /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5 [cursor-source] Private executables installed in: [cursor-source] /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0/libexec/x86_64-linux-ghc-9.6.5/cursor-0.3.2.0 [cursor-source] Data files installed in: [cursor-source] /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0/share/x86_64-linux-ghc-9.6.5/cursor-0.3.2.0 [cursor-source] Documentation installed in: /share/doc/cursor-0.3.2.0 [cursor-source] Configuration files installed in: [cursor-source] /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0/etc [cursor-source] No alex found [cursor-source] Using ar found on system at: [cursor-source] /nix/store/z34dss3rj1rnp1g820r64w0na7452jy1-binutils-2.41/bin/ar [cursor-source] No c2hs found [cursor-source] No cpphs found [cursor-source] No doctest found [cursor-source] Using gcc version 13.2.0 given by user at: [cursor-source] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/gcc [cursor-source] Using ghc version 9.6.5 found on system at: [cursor-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc [cursor-source] Using ghc-pkg version 9.6.5 found on system at: [cursor-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc-pkg-9.6.5 [cursor-source] No ghcjs found [cursor-source] No ghcjs-pkg found [cursor-source] No greencard found [cursor-source] Using haddock version 2.29.2 found on system at: [cursor-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/haddock-ghc-9.6.5 [cursor-source] No happy found [cursor-source] Using haskell-suite found on system at: haskell-suite-dummy-location [cursor-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [cursor-source] No hmake found [cursor-source] Using hpc version 0.68 found on system at: [cursor-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hpc-ghc-9.6.5 [cursor-source] Using hsc2hs version 0.68.9 found on system at: [cursor-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hsc2hs-ghc-9.6.5 [cursor-source] Using hscolour version 1.25 found on system at: [cursor-source] /nix/store/i9w3cy6bda04c89yh2wk5l5mwhddihsf-hscolour-1.25/bin/HsColour [cursor-source] No jhc found [cursor-source] Using ld found on system at: [cursor-source] /nix/store/rl56awy2w2iwvgdmibv98k0vx7lzyw21-binutils-wrapper-2.41/bin/ld.gold [cursor-source] No pkg-config found [cursor-source] Using runghc version 9.6.5 found on system at: [cursor-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/runghc-9.6.5 [cursor-source] Using strip version 2.41 found on system at: [cursor-source] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/strip [cursor-source] Using tar found on system at: [cursor-source] /nix/store/llalnjlyrj2zv12q5bjy8cagqv70j73y-gnutar-1.35/bin/tar [cursor-source] No uhc found [cursor-source] Phase: buildPhase [cursor-source] Building source dist for cursor-0.3.2.0... [cursor-source] Source tarball created: dist/cursor-0.3.2.0.tar.gz [cursor-source] Phase: checkPhase [cursor-source] Phase: haddockPhase [cursor-source] Phase: installPhase [cursor-source] Phase: fixupPhase [post-build-hook] Uploading to cachix cache "cursor": /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0 [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache cursor ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0 (23.73 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0 [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying 7 paths... [post-build-hook] copying path '/nix/store/gjl69b42s3kl6x93p8a33590yx0dqr1f-validity-containers-0.5.0.4.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/2i3hh8508bb09ijfpd8mriipdp7156h5-validity-text-0.3.1.3.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/73mhhkiik1njr7kcr7vc8qspirn91d2a-validity-0.12.0.2.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/azpni2ywy00gck0kn41fnv6zr5r4cdx3-validity-0.12.0.2.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/qwmh51c2wa0w9dh22hzww0c3dwgz1dhs-validity-text-0.3.1.3.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/31p04j0bix7wwc18x0q649630019z1as-validity-containers-0.5.0.4.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/adiav67i762ghcc4ppsca55phcv3wgaa-cursor-source-0.3.2.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 1 of 6 built, 19 of 19 downloaded from cache Building cursor [cursor] Phase: setupCompilerEnvironmentPhase [cursor] Build with /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5. [cursor] Phase: unpackPhase [cursor] unpacking source archive /nix/store/npcjvz3px9r4lh588la3rlgn4hni0vgz-cursor-source-0.3.2.0/cursor-0.3.2.0.tar.gz [cursor] source root is cursor-0.3.2.0 [cursor] setting SOURCE_DATE_EPOCH to timestamp 1780346375 of file cursor-0.3.2.0/src/Cursor/Types.hs [cursor] warning: file cursor-0.3.2.0/src/Cursor/Types.hs may be generated; SOURCE_DATE_EPOCH may be non-deterministic [cursor] Phase: patchPhase [cursor] Phase: compileBuildDriverPhase [cursor] setupCompileFlags: -package-db=/build/tmp.gmGlqmV4zC/setup-package.conf.d -threaded [cursor] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.gmGlqmV4zC/Main.o ) [cursor] [2 of 2] Linking Setup [cursor] Phase: updateAutotoolsGnuConfigScriptsPhase [cursor] Phase: configurePhase [cursor] configureFlags: --verbose --prefix=/nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc/share/doc/cursor-0.3.2.0 --with-gcc=gcc --package-db=/build/tmp.gmGlqmV4zC/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-option=-Wall --ghc-option=-Werror --extra-lib-dirs=/nix/store/zmi2nlx42h1qrs2v7yn142dq4zjq30im-ncurses-6.4/lib --extra-lib-dirs=/nix/store/gniy4ab9wcijxjpcciddgpzdwq3v3dnb-libffi-3.4.6/lib --extra-lib-dirs=/nix/store/jsizfglsm40vsjc81xnm3wa0rxshpnz0-elfutils-0.191/lib --extra-lib-dirs=/nix/store/s8q3rch0wd3shdnznz9bcj8mj6pvz1gr-gmp-with-cxx-6.3.0/lib [cursor] Using Parsec parser [cursor] Configuring cursor-0.3.2.0... [cursor] Dependency base <5: using base-4.18.2.1 [cursor] Dependency containers: using containers-0.6.7 [cursor] Dependency deepseq: using deepseq-1.4.8.1 [cursor] Dependency microlens: using microlens-0.4.13.1 [cursor] Dependency text: using text-2.0.2 [cursor] Dependency validity >=0.8.0.0: using validity-0.12.0.2 [cursor] Dependency validity-containers: using validity-containers-0.5.0.4 [cursor] Dependency validity-text: using validity-text-0.3.1.3 [cursor] Source component graph: component lib [cursor] Configured component graph: [cursor]  component cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor]  include base-4.18.2.1 [cursor]  include containers-0.6.7 [cursor]  include deepseq-1.4.8.1 [cursor]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor]  include text-2.0.2 [cursor]  include validity-0.12.0.2-AqvCHWoomQb7m5ThLeZJUF [cursor]  include validity-containers-0.5.0.4-HslGVSV6GkS7jwFislmzmK [cursor]  include validity-text-0.3.1.3-6Zok7jKKi6MH9yUmWvp5nD [cursor] Linked component graph: [cursor]  unit cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor]  include base-4.18.2.1 [cursor]  include containers-0.6.7 [cursor]  include deepseq-1.4.8.1 [cursor]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor]  include text-2.0.2 [cursor]  include validity-0.12.0.2-AqvCHWoomQb7m5ThLeZJUF [cursor]  include validity-containers-0.5.0.4-HslGVSV6GkS7jwFislmzmK [cursor]  include validity-text-0.3.1.3-6Zok7jKKi6MH9yUmWvp5nD [cursor]  Cursor.Forest=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Forest,Cursor.List=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.List,Cursor.List.NonEmpty=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.List.NonEmpty,Cursor.Map=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Map,Cursor.Map.KeyValue=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Map.KeyValue,Cursor.Simple.Forest=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Forest,Cursor.Simple.List.NonEmpty=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.List.NonEmpty,Cursor.Simple.Map=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Map,Cursor.Simple.Map.KeyValue=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Map.KeyValue,Cursor.Simple.Tree=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Simple.Tree,Cursor.Text=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Text,Cursor.TextField=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.TextField,Cursor.Tree=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree,Cursor.Tree.Base=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Base,Cursor.Tree.Collapse=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Collapse,Cursor.Tree.Delete=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Delete,Cursor.Tree.Demote=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Demote,Cursor.Tree.Draw=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Draw,Cursor.Tree.Insert=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Insert,Cursor.Tree.Movement=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Movement,Cursor.Tree.Promote=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Promote,Cursor.Tree.Swap=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Swap,Cursor.Tree.Types=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Tree.Types,Cursor.Types=cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg:Cursor.Types [cursor] Ready component graph: [cursor]  definite cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor]  depends base-4.18.2.1 [cursor]  depends containers-0.6.7 [cursor]  depends deepseq-1.4.8.1 [cursor]  depends microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor]  depends text-2.0.2 [cursor]  depends validity-0.12.0.2-AqvCHWoomQb7m5ThLeZJUF [cursor]  depends validity-containers-0.5.0.4-HslGVSV6GkS7jwFislmzmK [cursor]  depends validity-text-0.3.1.3-6Zok7jKKi6MH9yUmWvp5nD [cursor] Using Cabal-3.10.3.0 compiled by ghc-9.6 [cursor] Using compiler: ghc-9.6.5 [cursor] Using install prefix: [cursor] /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0 [cursor] Executables installed in: [cursor] /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/bin [cursor] Libraries installed in: [cursor] /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor] Dynamic Libraries installed in: [cursor] /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5 [cursor] Private executables installed in: [cursor] /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/libexec/x86_64-linux-ghc-9.6.5/cursor-0.3.2.0 [cursor] Data files installed in: [cursor] /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/share/x86_64-linux-ghc-9.6.5/cursor-0.3.2.0 [cursor] Documentation installed in: [cursor] /nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc/share/doc/cursor-0.3.2.0 [cursor] Configuration files installed in: [cursor] /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/etc [cursor] No alex found [cursor] Using ar found on system at: [cursor] /nix/store/z34dss3rj1rnp1g820r64w0na7452jy1-binutils-2.41/bin/ar [cursor] No c2hs found [cursor] No cpphs found [cursor] No doctest found [cursor] Using gcc version 13.2.0 given by user at: [cursor] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/gcc [cursor] Using ghc version 9.6.5 found on system at: [cursor] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc [cursor] Using ghc-pkg version 9.6.5 found on system at: [cursor] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc-pkg-9.6.5 [cursor] No ghcjs found [cursor] No ghcjs-pkg found [cursor] No greencard found [cursor] Using haddock version 2.29.2 found on system at: [cursor] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/haddock-ghc-9.6.5 [cursor] No happy found [cursor] Using haskell-suite found on system at: haskell-suite-dummy-location [cursor] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [cursor] No hmake found [cursor] Using hpc version 0.68 found on system at: [cursor] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hpc-ghc-9.6.5 [cursor] Using hsc2hs version 0.68.9 found on system at: [cursor] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hsc2hs-ghc-9.6.5 [cursor] Using hscolour version 1.25 found on system at: [cursor] /nix/store/i9w3cy6bda04c89yh2wk5l5mwhddihsf-hscolour-1.25/bin/HsColour [cursor] No jhc found [cursor] Using ld found on system at: [cursor] /nix/store/rl56awy2w2iwvgdmibv98k0vx7lzyw21-binutils-wrapper-2.41/bin/ld.gold [cursor] No pkg-config found [cursor] Using runghc version 9.6.5 found on system at: [cursor] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/runghc-9.6.5 [cursor] Using strip version 2.41 found on system at: [cursor] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/strip [cursor] Using tar found on system at: [cursor] /nix/store/llalnjlyrj2zv12q5bjy8cagqv70j73y-gnutar-1.35/bin/tar [cursor] No uhc found [cursor] Phase: buildPhase [cursor] Preprocessing library for cursor-0.3.2.0.. [cursor] Building library for cursor-0.3.2.0.. [cursor] [ 1 of 25] Compiling Cursor.Map.KeyValue ( src/Cursor/Map/KeyValue.hs, dist/build/Cursor/Map/KeyValue.o, dist/build/Cursor/Map/KeyValue.dyn_o ) [cursor] [ 2 of 25] Compiling Cursor.Simple.Map.KeyValue ( src/Cursor/Simple/Map/KeyValue.hs, dist/build/Cursor/Simple/Map/KeyValue.o, dist/build/Cursor/Simple/Map/KeyValue.dyn_o ) [cursor] [ 3 of 25] Compiling Cursor.Tree.Types ( src/Cursor/Tree/Types.hs, dist/build/Cursor/Tree/Types.o, dist/build/Cursor/Tree/Types.dyn_o ) [cursor] [ 4 of 25] Compiling Cursor.Tree.Swap ( src/Cursor/Tree/Swap.hs, dist/build/Cursor/Tree/Swap.o, dist/build/Cursor/Tree/Swap.dyn_o ) [cursor] [ 5 of 25] Compiling Cursor.Tree.Insert ( src/Cursor/Tree/Insert.hs, dist/build/Cursor/Tree/Insert.o, dist/build/Cursor/Tree/Insert.dyn_o ) [cursor] [ 6 of 25] Compiling Cursor.Tree.Draw ( src/Cursor/Tree/Draw.hs, dist/build/Cursor/Tree/Draw.o, dist/build/Cursor/Tree/Draw.dyn_o ) [cursor] [ 7 of 25] Compiling Cursor.Tree.Collapse ( src/Cursor/Tree/Collapse.hs, dist/build/Cursor/Tree/Collapse.o, dist/build/Cursor/Tree/Collapse.dyn_o ) [cursor] [ 8 of 25] Compiling Cursor.Tree.Base ( src/Cursor/Tree/Base.hs, dist/build/Cursor/Tree/Base.o, dist/build/Cursor/Tree/Base.dyn_o ) [cursor] [ 9 of 25] Compiling Cursor.Tree.Promote ( src/Cursor/Tree/Promote.hs, dist/build/Cursor/Tree/Promote.o, dist/build/Cursor/Tree/Promote.dyn_o ) [cursor] [10 of 25] Compiling Cursor.Tree.Movement ( src/Cursor/Tree/Movement.hs, dist/build/Cursor/Tree/Movement.o, dist/build/Cursor/Tree/Movement.dyn_o ) [cursor] [11 of 25] Compiling Cursor.Tree.Demote ( src/Cursor/Tree/Demote.hs, dist/build/Cursor/Tree/Demote.o, dist/build/Cursor/Tree/Demote.dyn_o ) [cursor] [12 of 25] Compiling Cursor.Types ( src/Cursor/Types.hs, dist/build/Cursor/Types.o, dist/build/Cursor/Types.dyn_o ) [cursor] [13 of 25] Compiling Cursor.Tree.Delete ( src/Cursor/Tree/Delete.hs, dist/build/Cursor/Tree/Delete.o, dist/build/Cursor/Tree/Delete.dyn_o ) [cursor] [14 of 25] Compiling Cursor.Tree ( src/Cursor/Tree.hs, dist/build/Cursor/Tree.o, dist/build/Cursor/Tree.dyn_o ) [cursor] [15 of 25] Compiling Cursor.Simple.Tree ( src/Cursor/Simple/Tree.hs, dist/build/Cursor/Simple/Tree.o, dist/build/Cursor/Simple/Tree.dyn_o ) [cursor] [16 of 25] Compiling Cursor.List.NonEmpty ( src/Cursor/List/NonEmpty.hs, dist/build/Cursor/List/NonEmpty.o, dist/build/Cursor/List/NonEmpty.dyn_o ) [cursor] [17 of 25] Compiling Cursor.Simple.List.NonEmpty ( src/Cursor/Simple/List/NonEmpty.hs, dist/build/Cursor/Simple/List/NonEmpty.o, dist/build/Cursor/Simple/List/NonEmpty.dyn_o ) [cursor] [18 of 25] Compiling Cursor.Map ( src/Cursor/Map.hs, dist/build/Cursor/Map.o, dist/build/Cursor/Map.dyn_o ) [cursor] [19 of 25] Compiling Cursor.Simple.Map ( src/Cursor/Simple/Map.hs, dist/build/Cursor/Simple/Map.o, dist/build/Cursor/Simple/Map.dyn_o ) [cursor] [20 of 25] Compiling Cursor.List ( src/Cursor/List.hs, dist/build/Cursor/List.o, dist/build/Cursor/List.dyn_o ) [cursor] [21 of 25] Compiling Cursor.Text ( src/Cursor/Text.hs, dist/build/Cursor/Text.o, dist/build/Cursor/Text.dyn_o ) [cursor] [22 of 25] Compiling Cursor.TextField ( src/Cursor/TextField.hs, dist/build/Cursor/TextField.o, dist/build/Cursor/TextField.dyn_o ) [cursor] [23 of 25] Compiling Cursor.Forest ( src/Cursor/Forest.hs, dist/build/Cursor/Forest.o, dist/build/Cursor/Forest.dyn_o ) [cursor] [24 of 25] Compiling Cursor.Simple.Forest ( src/Cursor/Simple/Forest.hs, dist/build/Cursor/Simple/Forest.o, dist/build/Cursor/Simple/Forest.dyn_o ) [cursor] [25 of 25] Compiling Paths_cursor ( dist/build/autogen/Paths_cursor.hs, dist/build/Paths_cursor.o, dist/build/Paths_cursor.dyn_o ) [cursor] [ 1 of 25] Compiling Cursor.Map.KeyValue ( src/Cursor/Map/KeyValue.hs, dist/build/Cursor/Map/KeyValue.p_o ) [cursor] [ 2 of 25] Compiling Cursor.Simple.Map.KeyValue ( src/Cursor/Simple/Map/KeyValue.hs, dist/build/Cursor/Simple/Map/KeyValue.p_o ) [cursor] [ 3 of 25] Compiling Cursor.Tree.Types ( src/Cursor/Tree/Types.hs, dist/build/Cursor/Tree/Types.p_o ) [cursor] [ 4 of 25] Compiling Cursor.Tree.Swap ( src/Cursor/Tree/Swap.hs, dist/build/Cursor/Tree/Swap.p_o ) [cursor] [ 5 of 25] Compiling Cursor.Tree.Insert ( src/Cursor/Tree/Insert.hs, dist/build/Cursor/Tree/Insert.p_o ) [cursor] [ 6 of 25] Compiling Cursor.Tree.Draw ( src/Cursor/Tree/Draw.hs, dist/build/Cursor/Tree/Draw.p_o ) [cursor] [ 7 of 25] Compiling Cursor.Tree.Collapse ( src/Cursor/Tree/Collapse.hs, dist/build/Cursor/Tree/Collapse.p_o ) [cursor] [ 8 of 25] Compiling Cursor.Tree.Base ( src/Cursor/Tree/Base.hs, dist/build/Cursor/Tree/Base.p_o ) [cursor] [ 9 of 25] Compiling Cursor.Tree.Promote ( src/Cursor/Tree/Promote.hs, dist/build/Cursor/Tree/Promote.p_o ) [cursor] [10 of 25] Compiling Cursor.Tree.Movement ( src/Cursor/Tree/Movement.hs, dist/build/Cursor/Tree/Movement.p_o ) [cursor] [11 of 25] Compiling Cursor.Tree.Demote ( src/Cursor/Tree/Demote.hs, dist/build/Cursor/Tree/Demote.p_o ) [cursor] [12 of 25] Compiling Cursor.Types ( src/Cursor/Types.hs, dist/build/Cursor/Types.p_o ) [cursor] [13 of 25] Compiling Cursor.Tree.Delete ( src/Cursor/Tree/Delete.hs, dist/build/Cursor/Tree/Delete.p_o ) [cursor] [14 of 25] Compiling Cursor.Tree ( src/Cursor/Tree.hs, dist/build/Cursor/Tree.p_o ) [cursor] [15 of 25] Compiling Cursor.Simple.Tree ( src/Cursor/Simple/Tree.hs, dist/build/Cursor/Simple/Tree.p_o ) [cursor] [16 of 25] Compiling Cursor.List.NonEmpty ( src/Cursor/List/NonEmpty.hs, dist/build/Cursor/List/NonEmpty.p_o ) [cursor] [17 of 25] Compiling Cursor.Simple.List.NonEmpty ( src/Cursor/Simple/List/NonEmpty.hs, dist/build/Cursor/Simple/List/NonEmpty.p_o ) [cursor] [18 of 25] Compiling Cursor.Map ( src/Cursor/Map.hs, dist/build/Cursor/Map.p_o ) [cursor] [19 of 25] Compiling Cursor.Simple.Map ( src/Cursor/Simple/Map.hs, dist/build/Cursor/Simple/Map.p_o ) [cursor] [20 of 25] Compiling Cursor.List ( src/Cursor/List.hs, dist/build/Cursor/List.p_o ) [cursor] [21 of 25] Compiling Cursor.Text ( src/Cursor/Text.hs, dist/build/Cursor/Text.p_o ) [cursor] [22 of 25] Compiling Cursor.TextField ( src/Cursor/TextField.hs, dist/build/Cursor/TextField.p_o ) [cursor] [23 of 25] Compiling Cursor.Forest ( src/Cursor/Forest.hs, dist/build/Cursor/Forest.p_o ) [cursor] [24 of 25] Compiling Cursor.Simple.Forest ( src/Cursor/Simple/Forest.hs, dist/build/Cursor/Simple/Forest.p_o ) [cursor] [25 of 25] Compiling Paths_cursor ( dist/build/autogen/Paths_cursor.hs, dist/build/Paths_cursor.p_o ) [cursor] Phase: checkPhase [cursor] Package has no test suites. [cursor] Phase: haddockPhase [cursor] Preprocessing library for cursor-0.3.2.0.. [cursor] Running Haddock on library for cursor-0.3.2.0.. [cursor] Warning: --source-* options are ignored when --hyperlinked-source is enabled. [cursor]  0% ( 0 / 15) in 'Cursor.Map.KeyValue' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  KeyValueCursor (src/Cursor/Map/KeyValue.hs:28) [cursor]  makeKeyValueCursorKey (src/Cursor/Map/KeyValue.hs:39) [cursor]  makeKeyValueCursorValue (src/Cursor/Map/KeyValue.hs:42) [cursor]  rebuildKeyValueCursor (src/Cursor/Map/KeyValue.hs:45) [cursor]  keyValueCursorSelection (src/Cursor/Map/KeyValue.hs:49) [cursor]  mapKeyValueCursor (src/Cursor/Map/KeyValue.hs:53) [cursor]  keyValueCursorSelectKey (src/Cursor/Map/KeyValue.hs:65) [cursor]  keyValueCursorSelectValue (src/Cursor/Map/KeyValue.hs:72) [cursor]  keyValueCursorToggleSelected (src/Cursor/Map/KeyValue.hs:79) [cursor]  KeyValueToggle (src/Cursor/Map/KeyValue.hs:91) [cursor]  traverseKeyValueCursor (src/Cursor/Map/KeyValue.hs:98) [cursor]  keyValueCursorTraverseKeyCase (src/Cursor/Map/KeyValue.hs:101) [cursor]  keyValueCursorTraverseValueCase (src/Cursor/Map/KeyValue.hs:111) [cursor]  foldKeyValueCursor (src/Cursor/Map/KeyValue.hs:121) [cursor]  0% ( 0 / 13) in 'Cursor.Simple.Map.KeyValue' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  KeyValueCursor (src/Cursor/Simple/Map/KeyValue.hs:21) [cursor]  KeyValueCursorKey (src/Cursor/Map/KeyValue.hs:29) [cursor]  KeyValueCursorValue (src/Cursor/Map/KeyValue.hs:30) [cursor]  makeKeyValueCursorKey (src/Cursor/Map/KeyValue.hs:39) [cursor]  makeKeyValueCursorValue (src/Cursor/Map/KeyValue.hs:42) [cursor]  rebuildKeyValueCursor (src/Cursor/Simple/Map/KeyValue.hs:23) [cursor]  keyValueCursorSelection (src/Cursor/Map/KeyValue.hs:49) [cursor]  mapKeyValueCursor (src/Cursor/Simple/Map/KeyValue.hs:26) [cursor]  keyValueCursorSelectKey (src/Cursor/Simple/Map/KeyValue.hs:29) [cursor]  keyValueCursorSelectValue (src/Cursor/Simple/Map/KeyValue.hs:32) [cursor]  keyValueCursorToggleSelected (src/Cursor/Simple/Map/KeyValue.hs:35) [cursor]  KeyValueToggle (src/Cursor/Map/KeyValue.hs:91) [cursor]  3% ( 1 / 26) in 'Cursor.Tree.Types' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  TreeCursor (src/Cursor/Tree/Types.hs:45) [cursor]  treeCursorAboveL (src/Cursor/Tree/Types.hs:56) [cursor]  treeCursorCurrentL (src/Cursor/Tree/Types.hs:59) [cursor]  treeCursorBelowL (src/Cursor/Tree/Types.hs:62) [cursor]  treeCursorCurrentSubTreeL (src/Cursor/Tree/Types.hs:65) [cursor]  TreeAbove (src/Cursor/Tree/Types.hs:69) [cursor]  treeAboveLeftsL (src/Cursor/Tree/Types.hs:81) [cursor]  treeAboveAboveL (src/Cursor/Tree/Types.hs:84) [cursor]  treeAboveNodeL (src/Cursor/Tree/Types.hs:87) [cursor]  treeAboveRightsL (src/Cursor/Tree/Types.hs:90) [cursor]  TreeCursorSelection (src/Cursor/Tree/Types.hs:93) [cursor]  CTree (src/Cursor/Tree/Types.hs:102) [cursor]  makeCTree (src/Cursor/Tree/Types.hs:116) [cursor]  cTree (src/Cursor/Tree/Types.hs:119) [cursor]  rebuildCTree (src/Cursor/Tree/Types.hs:122) [cursor]  CForest (src/Cursor/Tree/Types.hs:125) [cursor]  makeCForest (src/Cursor/Tree/Types.hs:147) [cursor]  cForest (src/Cursor/Tree/Types.hs:150) [cursor]  rebuildCForest (src/Cursor/Tree/Types.hs:156) [cursor]  emptyCForest (src/Cursor/Tree/Types.hs:161) [cursor]  openForest (src/Cursor/Tree/Types.hs:164) [cursor]  closedForest (src/Cursor/Tree/Types.hs:167) [cursor]  lengthCForest (src/Cursor/Tree/Types.hs:170) [cursor]  unpackCForest (src/Cursor/Tree/Types.hs:175) [cursor]  50% ( 2 / 4) in 'Cursor.Tree.Swap' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  SwapResult (src/Cursor/Tree/Swap.hs:69) [cursor]  0% ( 0 / 21) in 'Cursor.Tree.Insert' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  treeCursorInsert (src/Cursor/Tree/Insert.hs:33) [cursor]  treeCursorInsertAndSelect (src/Cursor/Tree/Insert.hs:39) [cursor]  treeCursorInsertNodeSingleAndSelect (src/Cursor/Tree/Insert.hs:43) [cursor]  treeCursorInsertNodeAndSelect (src/Cursor/Tree/Insert.hs:47) [cursor]  treeCursorAppend (src/Cursor/Tree/Insert.hs:55) [cursor]  treeCursorAppendAndSelect (src/Cursor/Tree/Insert.hs:61) [cursor]  treeCursorAppendNodeSingleAndSelect (src/Cursor/Tree/Insert.hs:65) [cursor]  treeCursorAppendNodeAndSelect (src/Cursor/Tree/Insert.hs:69) [cursor]  treeCursorAddChildAtPos (src/Cursor/Tree/Insert.hs:78) [cursor]  treeCursorAddChildAtStart (src/Cursor/Tree/Insert.hs:89) [cursor]  treeCursorAddChildAtEnd (src/Cursor/Tree/Insert.hs:96) [cursor]  treeCursorAddChildAtPosAndSelect (src/Cursor/Tree/Insert.hs:103) [cursor]  treeCursorAddChildAtStartAndSelect (src/Cursor/Tree/Insert.hs:107) [cursor]  treeCursorAddChildAtEndAndSelect (src/Cursor/Tree/Insert.hs:111) [cursor]  treeCursorAddChildNodeSingleAtPosAndSelect (src/Cursor/Tree/Insert.hs:115) [cursor]  treeCursorAddChildNodeSingleAtStartAndSelect (src/Cursor/Tree/Insert.hs:119) [cursor]  treeCursorAddChildNodeSingleAtEndAndSelect (src/Cursor/Tree/Insert.hs:123) [cursor]  treeCursorAddChildNodeAtPosAndSelect (src/Cursor/Tree/Insert.hs:127) [cursor]  treeCursorAddChildNodeAtStartAndSelect (src/Cursor/Tree/Insert.hs:144) [cursor]  treeCursorAddChildNodeAtEndAndSelect (src/Cursor/Tree/Insert.hs:160) [cursor]  0% ( 0 / 7) in 'Cursor.Tree.Draw' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  drawTreeCursor (src/Cursor/Tree/Draw.hs:18) [cursor]  treeCursorWithPointer (src/Cursor/Tree/Draw.hs:21) [cursor]  showCForest (src/Cursor/Tree/Draw.hs:32) [cursor]  showCTree (src/Cursor/Tree/Draw.hs:37) [cursor]  showForest (src/Cursor/Tree/Draw.hs:40) [cursor]  showTree (src/Cursor/Tree/Draw.hs:43) [cursor]  0% ( 0 / 6) in 'Cursor.Tree.Collapse' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  treeCursorOpenCurrentForest (src/Cursor/Tree/Collapse.hs:13) [cursor]  treeCursorCloseCurrentForest (src/Cursor/Tree/Collapse.hs:20) [cursor]  treeCursorToggleCurrentForest (src/Cursor/Tree/Collapse.hs:27) [cursor]  treeCursorOpenCurrentForestRecursively (src/Cursor/Tree/Collapse.hs:34) [cursor]  treeCursorToggleCurrentForestRecursively (src/Cursor/Tree/Collapse.hs:41) [cursor]  0% ( 0 / 11) in 'Cursor.Tree.Base' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  singletonTreeCursor (src/Cursor/Tree/Base.hs:22) [cursor]  makeTreeCursor (src/Cursor/Tree/Base.hs:25) [cursor]  makeNodeTreeCursor (src/Cursor/Tree/Base.hs:28) [cursor]  makeTreeCursorWithSelection (src/Cursor/Tree/Base.hs:31) [cursor]  rebuildTreeCursor (src/Cursor/Tree/Base.hs:51) [cursor]  mapTreeCursor (src/Cursor/Tree/Base.hs:61) [cursor]  currentTree (src/Cursor/Tree/Base.hs:69) [cursor]  makeTreeCursorWithAbove (src/Cursor/Tree/Base.hs:72) [cursor]  traverseTreeCursor (src/Cursor/Tree/Base.hs:76) [cursor]  foldTreeCursor (src/Cursor/Tree/Base.hs:93) [cursor]  40% ( 2 / 5) in 'Cursor.Tree.Promote' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  PromoteElemResult (src/Cursor/Tree/Promote.hs:69) [cursor]  PromoteResult (src/Cursor/Tree/Promote.hs:136) [cursor]  10% ( 2 / 20) in 'Cursor.Tree.Movement' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  treeCursorSelection (src/Cursor/Tree/Movement.hs:34) [cursor]  TreeCursorSelection (src/Cursor/Tree/Types.hs:93) [cursor]  treeCursorSelect (src/Cursor/Tree/Movement.hs:41) [cursor]  treeCursorSelectPrev (src/Cursor/Tree/Movement.hs:45) [cursor]  treeCursorSelectNext (src/Cursor/Tree/Movement.hs:51) [cursor]  treeCursorSelectFirst (src/Cursor/Tree/Movement.hs:57) [cursor]  treeCursorSelectLast (src/Cursor/Tree/Movement.hs:60) [cursor]  treeCursorSelectAbove (src/Cursor/Tree/Movement.hs:63) [cursor]  treeCursorSelectBelowAtPos (src/Cursor/Tree/Movement.hs:72) [cursor]  treeCursorSelectBelowAtStart (src/Cursor/Tree/Movement.hs:92) [cursor]  treeCursorSelectBelowAtEnd (src/Cursor/Tree/Movement.hs:95) [cursor]  treeCursorSelectBelowAtStartRecursively (src/Cursor/Tree/Movement.hs:102) [cursor]  treeCursorSelectBelowAtEndRecursively (src/Cursor/Tree/Movement.hs:108) [cursor]  treeCursorSelectPrevOnSameLevel (src/Cursor/Tree/Movement.hs:114) [cursor]  treeCursorSelectNextOnSameLevel (src/Cursor/Tree/Movement.hs:123) [cursor]  treeCursorSelectFirstOnSameLevel (src/Cursor/Tree/Movement.hs:132) [cursor]  treeCursorSelectLastOnSameLevel (src/Cursor/Tree/Movement.hs:138) [cursor]  66% ( 4 / 6) in 'Cursor.Tree.Demote' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  DemoteResult (src/Cursor/Tree/Demote.hs:98) [cursor]  0% ( 0 / 9) in 'Cursor.Types' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  isSafeChar (src/Cursor/Types.hs:12) [cursor]  DeleteOrUpdate (src/Cursor/Types.hs:15) [cursor]  joinDeletes (src/Cursor/Types.hs:42) [cursor]  joinDeletes3 (src/Cursor/Types.hs:49) [cursor]  joinPossibleDeletes (src/Cursor/Types.hs:61) [cursor]  focusPossibleDeleteOrUpdate (src/Cursor/Types.hs:65) [cursor]  dullMDelete (src/Cursor/Types.hs:72) [cursor]  dullDelete (src/Cursor/Types.hs:76) [cursor]  0% ( 0 / 11) in 'Cursor.Tree.Delete' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  treeCursorDeleteSubTreeAndSelectPrevious (src/Cursor/Tree/Delete.hs:26) [cursor]  treeCursorDeleteSubTreeAndSelectNext (src/Cursor/Tree/Delete.hs:36) [cursor]  treeCursorDeleteSubTreeAndSelectAbove (src/Cursor/Tree/Delete.hs:46) [cursor]  treeCursorRemoveSubTree (src/Cursor/Tree/Delete.hs:59) [cursor]  treeCursorDeleteSubTree (src/Cursor/Tree/Delete.hs:66) [cursor]  treeCursorDeleteElemAndSelectPrevious (src/Cursor/Tree/Delete.hs:73) [cursor]  treeCursorDeleteElemAndSelectNext (src/Cursor/Tree/Delete.hs:92) [cursor]  treeCursorDeleteElemAndSelectAbove (src/Cursor/Tree/Delete.hs:130) [cursor]  treeCursorRemoveElem (src/Cursor/Tree/Delete.hs:148) [cursor]  treeCursorDeleteElem (src/Cursor/Tree/Delete.hs:155) [cursor]  86% ( 20 / 23) in 'Cursor.Tree' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  TreeCursor (src/Cursor/Tree/Types.hs:45) [cursor]  TreeAbove (src/Cursor/Tree/Types.hs:69) [cursor]  6% ( 6 / 89) in 'Cursor.Simple.Tree' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  TreeCursor (src/Cursor/Simple/Tree.hs:100) [cursor]  TreeAbove (src/Cursor/Tree/Types.hs:69) [cursor]  singletonTreeCursor (src/Cursor/Simple/Tree.hs:108) [cursor]  makeTreeCursor (src/Cursor/Simple/Tree.hs:102) [cursor]  makeNodeTreeCursor (src/Cursor/Tree/Base.hs:28) [cursor]  makeTreeCursorWithSelection (src/Cursor/Simple/Tree.hs:105) [cursor]  rebuildTreeCursor (src/Cursor/Simple/Tree.hs:111) [cursor]  drawTreeCursor (src/Cursor/Tree/Draw.hs:18) [cursor]  mapTreeCursor (src/Cursor/Simple/Tree.hs:114) [cursor]  treeCursorAboveL (src/Cursor/Tree/Types.hs:56) [cursor]  treeCursorCurrentL (src/Cursor/Tree/Types.hs:59) [cursor]  treeCursorBelowL (src/Cursor/Tree/Types.hs:62) [cursor]  treeAboveLeftsL (src/Cursor/Tree/Types.hs:81) [cursor]  treeAboveAboveL (src/Cursor/Tree/Types.hs:84) [cursor]  treeAboveNodeL (src/Cursor/Tree/Types.hs:87) [cursor]  treeAboveRightsL (src/Cursor/Tree/Types.hs:90) [cursor]  treeCursorWithPointer (src/Cursor/Tree/Draw.hs:21) [cursor]  treeCursorSelection (src/Cursor/Tree/Movement.hs:34) [cursor]  TreeCursorSelection (src/Cursor/Tree/Types.hs:93) [cursor]  treeCursorSelect (src/Cursor/Simple/Tree.hs:117) [cursor]  treeCursorSelectPrev (src/Cursor/Simple/Tree.hs:120) [cursor]  treeCursorSelectNext (src/Cursor/Simple/Tree.hs:123) [cursor]  treeCursorSelectFirst (src/Cursor/Simple/Tree.hs:126) [cursor]  treeCursorSelectLast (src/Cursor/Simple/Tree.hs:129) [cursor]  treeCursorSelectAbove (src/Cursor/Simple/Tree.hs:132) [cursor]  treeCursorSelectBelowAtPos (src/Cursor/Simple/Tree.hs:135) [cursor]  treeCursorSelectBelowAtStart (src/Cursor/Simple/Tree.hs:138) [cursor]  treeCursorSelectBelowAtEnd (src/Cursor/Simple/Tree.hs:141) [cursor]  treeCursorSelectBelowAtStartRecursively (src/Cursor/Simple/Tree.hs:144) [cursor]  treeCursorSelectBelowAtEndRecursively (src/Cursor/Simple/Tree.hs:147) [cursor]  treeCursorSelectPrevOnSameLevel (src/Cursor/Simple/Tree.hs:150) [cursor]  treeCursorSelectNextOnSameLevel (src/Cursor/Simple/Tree.hs:153) [cursor]  treeCursorSelectFirstOnSameLevel (src/Cursor/Simple/Tree.hs:156) [cursor]  treeCursorSelectLastOnSameLevel (src/Cursor/Simple/Tree.hs:159) [cursor]  treeCursorOpenCurrentForest (src/Cursor/Tree/Collapse.hs:13) [cursor]  treeCursorCloseCurrentForest (src/Cursor/Tree/Collapse.hs:20) [cursor]  treeCursorToggleCurrentForest (src/Cursor/Tree/Collapse.hs:27) [cursor]  treeCursorOpenCurrentForestRecursively (src/Cursor/Tree/Collapse.hs:34) [cursor]  treeCursorToggleCurrentForestRecursively (src/Cursor/Tree/Collapse.hs:41) [cursor]  treeCursorInsert (src/Cursor/Tree/Insert.hs:33) [cursor]  treeCursorInsertAndSelect (src/Cursor/Simple/Tree.hs:172) [cursor]  treeCursorInsertNodeSingleAndSelect (src/Cursor/Simple/Tree.hs:175) [cursor]  treeCursorInsertNodeAndSelect (src/Cursor/Simple/Tree.hs:178) [cursor]  treeCursorAppend (src/Cursor/Tree/Insert.hs:55) [cursor]  treeCursorAppendAndSelect (src/Cursor/Simple/Tree.hs:181) [cursor]  treeCursorAppendNodeSingleAndSelect (src/Cursor/Simple/Tree.hs:184) [cursor]  treeCursorAppendNodeAndSelect (src/Cursor/Simple/Tree.hs:187) [cursor]  treeCursorAddChildAtPos (src/Cursor/Tree/Insert.hs:78) [cursor]  treeCursorAddChildAtStart (src/Cursor/Tree/Insert.hs:89) [cursor]  treeCursorAddChildAtEnd (src/Cursor/Tree/Insert.hs:96) [cursor]  treeCursorAddChildAtPosAndSelect (src/Cursor/Simple/Tree.hs:190) [cursor]  treeCursorAddChildAtStartAndSelect (src/Cursor/Simple/Tree.hs:193) [cursor]  treeCursorAddChildAtEndAndSelect (src/Cursor/Simple/Tree.hs:196) [cursor]  treeCursorAddChildNodeSingleAtPosAndSelect (src/Cursor/Simple/Tree.hs:199) [cursor]  treeCursorAddChildNodeSingleAtStartAndSelect (src/Cursor/Simple/Tree.hs:202) [cursor]  treeCursorAddChildNodeSingleAtEndAndSelect (src/Cursor/Simple/Tree.hs:205) [cursor]  treeCursorAddChildNodeAtPosAndSelect (src/Cursor/Simple/Tree.hs:208) [cursor]  treeCursorAddChildNodeAtStartAndSelect (src/Cursor/Simple/Tree.hs:211) [cursor]  treeCursorAddChildNodeAtEndAndSelect (src/Cursor/Simple/Tree.hs:214) [cursor]  treeCursorDeleteSubTreeAndSelectPrevious (src/Cursor/Simple/Tree.hs:217) [cursor]  treeCursorDeleteSubTreeAndSelectNext (src/Cursor/Simple/Tree.hs:220) [cursor]  treeCursorDeleteSubTreeAndSelectAbove (src/Cursor/Simple/Tree.hs:223) [cursor]  treeCursorRemoveSubTree (src/Cursor/Simple/Tree.hs:226) [cursor]  treeCursorDeleteSubTree (src/Cursor/Simple/Tree.hs:229) [cursor]  treeCursorDeleteElemAndSelectPrevious (src/Cursor/Simple/Tree.hs:232) [cursor]  treeCursorDeleteElemAndSelectNext (src/Cursor/Simple/Tree.hs:235) [cursor]  treeCursorDeleteElemAndSelectAbove (src/Cursor/Simple/Tree.hs:238) [cursor]  treeCursorRemoveElem (src/Cursor/Simple/Tree.hs:241) [cursor]  treeCursorDeleteElem (src/Cursor/Simple/Tree.hs:244) [cursor]  SwapResult (src/Cursor/Tree/Swap.hs:69) [cursor]  treeCursorPromoteElem (src/Cursor/Simple/Tree.hs:247) [cursor]  PromoteElemResult (src/Cursor/Tree/Promote.hs:69) [cursor]  treeCursorPromoteSubTree (src/Cursor/Simple/Tree.hs:250) [cursor]  PromoteResult (src/Cursor/Tree/Promote.hs:136) [cursor]  treeCursorDemoteElem (src/Cursor/Simple/Tree.hs:253) [cursor]  treeCursorDemoteSubTree (src/Cursor/Simple/Tree.hs:256) [cursor]  DemoteResult (src/Cursor/Tree/Demote.hs:98) [cursor]  CTree (src/Cursor/Tree/Types.hs:102) [cursor]  CForest (src/Cursor/Tree/Types.hs:125) [cursor]  makeCTree (src/Cursor/Tree/Types.hs:116) [cursor]  cTree (src/Cursor/Tree/Types.hs:119) [cursor]  rebuildCTree (src/Cursor/Tree/Types.hs:122) [cursor]  3% ( 1 / 33) in 'Cursor.List.NonEmpty' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  makeNonEmptyCursor (src/Cursor/List/NonEmpty.hs:64) [cursor]  makeNonEmptyCursorWithSelection (src/Cursor/List/NonEmpty.hs:67) [cursor]  singletonNonEmptyCursor (src/Cursor/List/NonEmpty.hs:86) [cursor]  rebuildNonEmptyCursor (src/Cursor/List/NonEmpty.hs:90) [cursor]  nonEmptyCursorElemL (src/Cursor/List/NonEmpty.hs:102) [cursor]  mapNonEmptyCursor (src/Cursor/List/NonEmpty.hs:94) [cursor]  nonEmptyCursorSelectPrev (src/Cursor/List/NonEmpty.hs:105) [cursor]  nonEmptyCursorSelectNext (src/Cursor/List/NonEmpty.hs:117) [cursor]  nonEmptyCursorSelectFirst (src/Cursor/List/NonEmpty.hs:129) [cursor]  nonEmptyCursorSelectLast (src/Cursor/List/NonEmpty.hs:135) [cursor]  nonEmptyCursorSelection (src/Cursor/List/NonEmpty.hs:141) [cursor]  nonEmptyCursorSelectIndex (src/Cursor/List/NonEmpty.hs:144) [cursor]  nonEmptyCursorInsert (src/Cursor/List/NonEmpty.hs:153) [cursor]  nonEmptyCursorAppend (src/Cursor/List/NonEmpty.hs:156) [cursor]  nonEmptyCursorInsertAndSelect (src/Cursor/List/NonEmpty.hs:159) [cursor]  nonEmptyCursorAppendAndSelect (src/Cursor/List/NonEmpty.hs:166) [cursor]  nonEmptyCursorInsertAtStart (src/Cursor/List/NonEmpty.hs:173) [cursor]  nonEmptyCursorAppendAtEnd (src/Cursor/List/NonEmpty.hs:176) [cursor]  nonEmptyCursorInsertAtStartAndSelect (src/Cursor/List/NonEmpty.hs:179) [cursor]  nonEmptyCursorAppendAtEndAndSelect (src/Cursor/List/NonEmpty.hs:184) [cursor]  nonEmptyCursorRemoveElemAndSelectPrev (src/Cursor/List/NonEmpty.hs:189) [cursor]  nonEmptyCursorDeleteElemAndSelectNext (src/Cursor/List/NonEmpty.hs:199) [cursor]  nonEmptyCursorRemoveElem (src/Cursor/List/NonEmpty.hs:209) [cursor]  nonEmptyCursorDeleteElem (src/Cursor/List/NonEmpty.hs:215) [cursor]  nonEmptyCursorSearch (src/Cursor/List/NonEmpty.hs:221) [cursor]  nonEmptyCursorSelectOrAdd (src/Cursor/List/NonEmpty.hs:236) [cursor]  renderNonEmptyCursor (src/Cursor/List/NonEmpty.hs:243) [cursor]  nonemptyPrepend (src/Cursor/List/NonEmpty.hs:247) [cursor]  nonemptyAppend (src/Cursor/List/NonEmpty.hs:250) [cursor]  traverseNonEmptyCursor (src/Cursor/List/NonEmpty.hs:253) [cursor]  foldNonEmptyCursor (src/Cursor/List/NonEmpty.hs:256) [cursor]  3% ( 1 / 31) in 'Cursor.Simple.List.NonEmpty' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  nonEmptyCursorPrev (src/Cursor/List/NonEmpty.hs:54) [cursor]  nonEmptyCursorCurrent (src/Cursor/List/NonEmpty.hs:55) [cursor]  nonEmptyCursorNext (src/Cursor/List/NonEmpty.hs:56) [cursor]  makeNonEmptyCursor (src/Cursor/Simple/List/NonEmpty.hs:44) [cursor]  makeNonEmptyCursorWithSelection (src/Cursor/Simple/List/NonEmpty.hs:47) [cursor]  singletonNonEmptyCursor (src/Cursor/List/NonEmpty.hs:86) [cursor]  rebuildNonEmptyCursor (src/Cursor/Simple/List/NonEmpty.hs:50) [cursor]  mapNonEmptyCursor (src/Cursor/Simple/List/NonEmpty.hs:53) [cursor]  nonEmptyCursorElemL (src/Cursor/List/NonEmpty.hs:102) [cursor]  nonEmptyCursorSelectPrev (src/Cursor/Simple/List/NonEmpty.hs:56) [cursor]  nonEmptyCursorSelectNext (src/Cursor/Simple/List/NonEmpty.hs:59) [cursor]  nonEmptyCursorSelectFirst (src/Cursor/Simple/List/NonEmpty.hs:62) [cursor]  nonEmptyCursorSelectLast (src/Cursor/Simple/List/NonEmpty.hs:65) [cursor]  nonEmptyCursorSelection (src/Cursor/List/NonEmpty.hs:141) [cursor]  nonEmptyCursorSelectIndex (src/Cursor/Simple/List/NonEmpty.hs:68) [cursor]  nonEmptyCursorInsert (src/Cursor/List/NonEmpty.hs:153) [cursor]  nonEmptyCursorAppend (src/Cursor/List/NonEmpty.hs:156) [cursor]  nonEmptyCursorInsertAndSelect (src/Cursor/Simple/List/NonEmpty.hs:71) [cursor]  nonEmptyCursorAppendAndSelect (src/Cursor/Simple/List/NonEmpty.hs:74) [cursor]  nonEmptyCursorInsertAtStart (src/Cursor/List/NonEmpty.hs:173) [cursor]  nonEmptyCursorAppendAtEnd (src/Cursor/List/NonEmpty.hs:176) [cursor]  nonEmptyCursorInsertAtStartAndSelect (src/Cursor/Simple/List/NonEmpty.hs:77) [cursor]  nonEmptyCursorAppendAtEndAndSelect (src/Cursor/Simple/List/NonEmpty.hs:80) [cursor]  nonEmptyCursorRemoveElemAndSelectPrev (src/Cursor/Simple/List/NonEmpty.hs:83) [cursor]  nonEmptyCursorDeleteElemAndSelectNext (src/Cursor/Simple/List/NonEmpty.hs:87) [cursor]  nonEmptyCursorRemoveElem (src/Cursor/Simple/List/NonEmpty.hs:91) [cursor]  nonEmptyCursorDeleteElem (src/Cursor/Simple/List/NonEmpty.hs:94) [cursor]  nonEmptyCursorSearch (src/Cursor/Simple/List/NonEmpty.hs:97) [cursor]  nonEmptyCursorSelectOrAdd (src/Cursor/Simple/List/NonEmpty.hs:100) [cursor]  2% ( 1 / 37) in 'Cursor.Map' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  MapCursor (src/Cursor/Map.hs:56) [cursor]  makeMapCursor (src/Cursor/Map.hs:65) [cursor]  makeMapCursorWithSelection (src/Cursor/Map.hs:68) [cursor]  singletonMapCursorKey (src/Cursor/Map.hs:72) [cursor]  singletonMapCursorValue (src/Cursor/Map.hs:76) [cursor]  rebuildMapCursor (src/Cursor/Map.hs:80) [cursor]  mapMapCursor (src/Cursor/Map.hs:83) [cursor]  mapCursorNonEmptyCursorL (src/Cursor/Map.hs:88) [cursor]  mapCursorElemL (src/Cursor/Map.hs:106) [cursor]  mapCursorElemSelection (src/Cursor/Map.hs:110) [cursor]  mapCursorSelectKey (src/Cursor/Map.hs:113) [cursor]  mapCursorSelectValue (src/Cursor/Map.hs:116) [cursor]  mapCursorToggleSelected (src/Cursor/Map.hs:119) [cursor]  mapCursorSelectPrev (src/Cursor/Map.hs:123) [cursor]  mapCursorSelectNext (src/Cursor/Map.hs:128) [cursor]  mapCursorSelectFirst (src/Cursor/Map.hs:133) [cursor]  mapCursorSelectLast (src/Cursor/Map.hs:138) [cursor]  mapCursorSelection (src/Cursor/Map.hs:143) [cursor]  mapCursorSelectIndex (src/Cursor/Map.hs:146) [cursor]  mapCursorInsert (src/Cursor/Map.hs:156) [cursor]  mapCursorAppend (src/Cursor/Map.hs:159) [cursor]  mapCursorInsertAndSelectKey (src/Cursor/Map.hs:162) [cursor]  mapCursorAppendAndSelectKey (src/Cursor/Map.hs:168) [cursor]  mapCursorInsertAndSelectValue (src/Cursor/Map.hs:174) [cursor]  mapCursorAppendAndSelectValue (src/Cursor/Map.hs:180) [cursor]  mapCursorRemoveElemAndSelectPrev (src/Cursor/Map.hs:186) [cursor]  mapCursorDeleteElemAndSelectNext (src/Cursor/Map.hs:192) [cursor]  mapCursorRemoveElem (src/Cursor/Map.hs:198) [cursor]  mapCursorDeleteElem (src/Cursor/Map.hs:201) [cursor]  mapCursorSearch (src/Cursor/Map.hs:204) [cursor]  mapCursorSelectOrAdd (src/Cursor/Map.hs:214) [cursor]  traverseMapCursor (src/Cursor/Map.hs:232) [cursor]  mapCursorTraverseKeyCase (src/Cursor/Map.hs:236) [cursor]  mapCursorTraverseValueCase (src/Cursor/Map.hs:240) [cursor]  foldMapCursor (src/Cursor/Map.hs:244) [cursor]  3% ( 1 / 33) in 'Cursor.Simple.Map' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  MapCursor (src/Cursor/Simple/Map.hs:45) [cursor]  mapCursorList (src/Cursor/Map.hs:57) [cursor]  makeMapCursor (src/Cursor/Simple/Map.hs:47) [cursor]  makeMapCursorWithSelection (src/Cursor/Simple/Map.hs:50) [cursor]  singletonMapCursorKey (src/Cursor/Map.hs:72) [cursor]  singletonMapCursorValue (src/Cursor/Map.hs:76) [cursor]  rebuildMapCursor (src/Cursor/Simple/Map.hs:53) [cursor]  mapMapCursor (src/Cursor/Simple/Map.hs:56) [cursor]  mapCursorNonEmptyCursorL (src/Cursor/Map.hs:88) [cursor]  mapCursorElemL (src/Cursor/Map.hs:106) [cursor]  mapCursorSelectKey (src/Cursor/Simple/Map.hs:59) [cursor]  mapCursorSelectValue (src/Cursor/Simple/Map.hs:62) [cursor]  mapCursorToggleSelected (src/Cursor/Simple/Map.hs:65) [cursor]  mapCursorSelectPrev (src/Cursor/Simple/Map.hs:68) [cursor]  mapCursorSelectNext (src/Cursor/Simple/Map.hs:71) [cursor]  mapCursorSelectFirst (src/Cursor/Simple/Map.hs:74) [cursor]  mapCursorSelectLast (src/Cursor/Simple/Map.hs:77) [cursor]  mapCursorSelection (src/Cursor/Map.hs:143) [cursor]  mapCursorSelectIndex (src/Cursor/Simple/Map.hs:80) [cursor]  mapCursorInsert (src/Cursor/Map.hs:156) [cursor]  mapCursorAppend (src/Cursor/Map.hs:159) [cursor]  mapCursorInsertAndSelectKey (src/Cursor/Simple/Map.hs:83) [cursor]  mapCursorAppendAndSelectKey (src/Cursor/Simple/Map.hs:86) [cursor]  mapCursorInsertAndSelectValue (src/Cursor/Simple/Map.hs:89) [cursor]  mapCursorAppendAndSelectValue (src/Cursor/Simple/Map.hs:92) [cursor]  mapCursorRemoveElemAndSelectPrev (src/Cursor/Simple/Map.hs:95) [cursor]  mapCursorDeleteElemAndSelectNext (src/Cursor/Simple/Map.hs:98) [cursor]  mapCursorRemoveElem (src/Cursor/Simple/Map.hs:101) [cursor]  mapCursorDeleteElem (src/Cursor/Simple/Map.hs:104) [cursor]  mapCursorSearch (src/Cursor/Simple/Map.hs:107) [cursor]  mapCursorSelectOrAdd (src/Cursor/Simple/Map.hs:110) [cursor]  0% ( 0 / 28) in 'Cursor.List' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  ListCursor (src/Cursor/List.hs:42) [cursor]  emptyListCursor (src/Cursor/List.hs:53) [cursor]  makeListCursor (src/Cursor/List.hs:56) [cursor]  makeListCursorWithSelection (src/Cursor/List.hs:59) [cursor]  rebuildListCursor (src/Cursor/List.hs:65) [cursor]  listCursorNull (src/Cursor/List.hs:68) [cursor]  listCursorLength (src/Cursor/List.hs:71) [cursor]  listCursorIndex (src/Cursor/List.hs:74) [cursor]  listCursorSelectPrev (src/Cursor/List.hs:77) [cursor]  listCursorSelectNext (src/Cursor/List.hs:83) [cursor]  listCursorSelectIndex (src/Cursor/List.hs:89) [cursor]  listCursorSelectStart (src/Cursor/List.hs:95) [cursor]  listCursorSelectEnd (src/Cursor/List.hs:101) [cursor]  listCursorPrevItem (src/Cursor/List.hs:107) [cursor]  listCursorNextItem (src/Cursor/List.hs:113) [cursor]  listCursorPrevUntil (src/Cursor/List.hs:119) [cursor]  listCursorNextUntil (src/Cursor/List.hs:129) [cursor]  listCursorInsert (src/Cursor/List.hs:139) [cursor]  listCursorAppend (src/Cursor/List.hs:142) [cursor]  listCursorInsertList (src/Cursor/List.hs:145) [cursor]  listCursorAppendList (src/Cursor/List.hs:148) [cursor]  listCursorRemove (src/Cursor/List.hs:151) [cursor]  listCursorDelete (src/Cursor/List.hs:160) [cursor]  listCursorSplit (src/Cursor/List.hs:169) [cursor]  listCursorCombine (src/Cursor/List.hs:175) [cursor]  traverseListCursor (src/Cursor/List.hs:182) [cursor]  foldListCursor (src/Cursor/List.hs:185) [cursor]  16% ( 5 / 30) in 'Cursor.Text' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  emptyTextCursor (src/Cursor/Text.hs:66) [cursor]  makeTextCursor (src/Cursor/Text.hs:69) [cursor]  makeTextCursorWithSelection (src/Cursor/Text.hs:72) [cursor]  rebuildTextCursor (src/Cursor/Text.hs:78) [cursor]  textCursorNull (src/Cursor/Text.hs:85) [cursor]  textCursorLength (src/Cursor/Text.hs:88) [cursor]  textCursorIndex (src/Cursor/Text.hs:91) [cursor]  textCursorSelectPrev (src/Cursor/Text.hs:94) [cursor]  textCursorSelectNext (src/Cursor/Text.hs:97) [cursor]  textCursorSelectIndex (src/Cursor/Text.hs:100) [cursor]  textCursorSelectStart (src/Cursor/Text.hs:103) [cursor]  textCursorSelectEnd (src/Cursor/Text.hs:106) [cursor]  textCursorPrevChar (src/Cursor/Text.hs:109) [cursor]  textCursorNextChar (src/Cursor/Text.hs:112) [cursor]  textCursorInsert (src/Cursor/Text.hs:189) [cursor]  textCursorAppend (src/Cursor/Text.hs:196) [cursor]  textCursorInsertString (src/Cursor/Text.hs:203) [cursor]  textCursorAppendString (src/Cursor/Text.hs:209) [cursor]  textCursorInsertText (src/Cursor/Text.hs:215) [cursor]  textCursorAppendText (src/Cursor/Text.hs:218) [cursor]  textCursorRemove (src/Cursor/Text.hs:221) [cursor]  textCursorDelete (src/Cursor/Text.hs:224) [cursor]  textCursorSplit (src/Cursor/Text.hs:227) [cursor]  textCursorCombine (src/Cursor/Text.hs:232) [cursor]  6% ( 2 / 31) in 'Cursor.TextField' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  TextFieldCursor (src/Cursor/TextField.hs:55) [cursor]  makeTextFieldCursor (src/Cursor/TextField.hs:72) [cursor]  makeTextFieldCursorWithSelection (src/Cursor/TextField.hs:75) [cursor]  rebuildTextFieldCursorLines (src/Cursor/TextField.hs:85) [cursor]  rebuildTextFieldCursor (src/Cursor/TextField.hs:88) [cursor]  emptyTextFieldCursor (src/Cursor/TextField.hs:91) [cursor]  nullTextFieldCursor (src/Cursor/TextField.hs:95) [cursor]  textFieldCursorSelection (src/Cursor/TextField.hs:98) [cursor]  textFieldCursorNonEmptyCursorL (src/Cursor/TextField.hs:104) [cursor]  textFieldCursorSelectedL (src/Cursor/TextField.hs:108) [cursor]  textFieldCursorSelectPrevLine (src/Cursor/TextField.hs:111) [cursor]  textFieldCursorSelectNextLine (src/Cursor/TextField.hs:115) [cursor]  textFieldCursorSelectFirstLine (src/Cursor/TextField.hs:129) [cursor]  textFieldCursorSelectLastLine (src/Cursor/TextField.hs:133) [cursor]  textFieldCursorSelectPrevChar (src/Cursor/TextField.hs:147) [cursor]  textFieldCursorSelectNextChar (src/Cursor/TextField.hs:150) [cursor]  textFieldCursorSelectPrevWord (src/Cursor/TextField.hs:159) [cursor]  textFieldCursorSelectNextWord (src/Cursor/TextField.hs:162) [cursor]  textFieldCursorSelectBeginWord (src/Cursor/TextField.hs:153) [cursor]  textFieldCursorSelectEndWord (src/Cursor/TextField.hs:156) [cursor]  textFieldCursorIndexOnLine (src/Cursor/TextField.hs:165) [cursor]  textFieldCursorSelectIndexOnLine (src/Cursor/TextField.hs:168) [cursor]  textFieldCursorInsertNewline (src/Cursor/TextField.hs:199) [cursor]  textFieldCursorAppendNewline (src/Cursor/TextField.hs:212) [cursor]  textFieldCursorRemove (src/Cursor/TextField.hs:225) [cursor]  textFieldCursorDelete (src/Cursor/TextField.hs:249) [cursor]  textFieldCursorSelectStartOfLine (src/Cursor/TextField.hs:273) [cursor]  textFieldCursorSelectEndOfLine (src/Cursor/TextField.hs:276) [cursor]  8% ( 8 / 93) in 'Cursor.Forest' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  ForestCursor (src/Cursor/Forest.hs:114) [cursor]  singletonForestCursor (src/Cursor/Forest.hs:123) [cursor]  makeForestCursor (src/Cursor/Forest.hs:126) [cursor]  rebuildForestCursor (src/Cursor/Forest.hs:129) [cursor]  drawForestCursor (src/Cursor/Forest.hs:132) [cursor]  mapForestCursor (src/Cursor/Forest.hs:139) [cursor]  forestCursorListCursorL (src/Cursor/Forest.hs:142) [cursor]  forestCursorSelectedTreeL (src/Cursor/Forest.hs:146) [cursor]  forestCursorSelectPrevTreeCursor (src/Cursor/Forest.hs:149) [cursor]  forestCursorSelectNextTreeCursor (src/Cursor/Forest.hs:154) [cursor]  forestCursorSelectFirstTreeCursor (src/Cursor/Forest.hs:159) [cursor]  forestCursorSelectLastTreeCursor (src/Cursor/Forest.hs:163) [cursor]  forestCursorSelectPrev (src/Cursor/Forest.hs:172) [cursor]  forestCursorSelectNext (src/Cursor/Forest.hs:167) [cursor]  forestCursorSelectPrevOnSameLevel (src/Cursor/Forest.hs:186) [cursor]  forestCursorSelectNextOnSameLevel (src/Cursor/Forest.hs:180) [cursor]  forestCursorSelectFirst (src/Cursor/Forest.hs:204) [cursor]  forestCursorSelectLast (src/Cursor/Forest.hs:213) [cursor]  forestCursorSelectFirstOnSameLevel (src/Cursor/Forest.hs:198) [cursor]  forestCursorSelectLastOnSameLevel (src/Cursor/Forest.hs:192) [cursor]  forestCursorSelectAbove (src/Cursor/Forest.hs:222) [cursor]  forestCursorSelectBelowAtPos (src/Cursor/Forest.hs:225) [cursor]  forestCursorSelectBelowAtStart (src/Cursor/Forest.hs:229) [cursor]  forestCursorSelectBelowAtEnd (src/Cursor/Forest.hs:233) [cursor]  forestCursorSelection (src/Cursor/Forest.hs:236) [cursor]  forestCursorSelectIndex (src/Cursor/Forest.hs:239) [cursor]  forestCursorOpenCurrentForest (src/Cursor/Forest.hs:244) [cursor]  forestCursorCloseCurrentForest (src/Cursor/Forest.hs:247) [cursor]  forestCursorToggleCurrentForest (src/Cursor/Forest.hs:250) [cursor]  forestCursorOpenCurrentForestRecursively (src/Cursor/Forest.hs:253) [cursor]  forestCursorToggleCurrentForestRecursively (src/Cursor/Forest.hs:257) [cursor]  forestCursorInsertEntireTree (src/Cursor/Forest.hs:261) [cursor]  forestCursorAppendEntireTree (src/Cursor/Forest.hs:269) [cursor]  forestCursorInsertAndSelectTreeCursor (src/Cursor/Forest.hs:264) [cursor]  forestCursorAppendAndSelectTreeCursor (src/Cursor/Forest.hs:272) [cursor]  forestCursorInsertTree (src/Cursor/Forest.hs:277) [cursor]  forestCursorAppendTree (src/Cursor/Forest.hs:287) [cursor]  forestCursorInsertAndSelectTree (src/Cursor/Forest.hs:282) [cursor]  forestCursorAppendAndSelectTree (src/Cursor/Forest.hs:292) [cursor]  forestCursorInsert (src/Cursor/Forest.hs:297) [cursor]  forestCursorAppend (src/Cursor/Forest.hs:311) [cursor]  forestCursorInsertAndSelect (src/Cursor/Forest.hs:300) [cursor]  forestCursorAppendAndSelect (src/Cursor/Forest.hs:314) [cursor]  forestCursorInsertNodeSingleAndSelect (src/Cursor/Forest.hs:303) [cursor]  forestCursorAppendNodeSingleAndSelect (src/Cursor/Forest.hs:317) [cursor]  forestCursorInsertNodeAndSelect (src/Cursor/Forest.hs:306) [cursor]  forestCursorAppendNodeAndSelect (src/Cursor/Forest.hs:320) [cursor]  forestCursorAddChildTreeToNodeAtPos (src/Cursor/Forest.hs:325) [cursor]  forestCursorAddChildTreeToNodeAtStart (src/Cursor/Forest.hs:328) [cursor]  forestCursorAddChildTreeToNodeAtEnd (src/Cursor/Forest.hs:331) [cursor]  forestCursorAddChildToNodeAtPos (src/Cursor/Forest.hs:335) [cursor]  forestCursorAddChildToNodeAtStart (src/Cursor/Forest.hs:338) [cursor]  forestCursorAddChildToNodeAtEnd (src/Cursor/Forest.hs:341) [cursor]  forestCursorAddChildTreeToNodeAtPosAndSelect (src/Cursor/Forest.hs:344) [cursor]  forestCursorAddChildTreeToNodeAtStartAndSelect (src/Cursor/Forest.hs:349) [cursor]  forestCursorAddChildTreeToNodeAtEndAndSelect (src/Cursor/Forest.hs:354) [cursor]  forestCursorAddChildToNodeAtPosAndSelect (src/Cursor/Forest.hs:359) [cursor]  forestCursorAddChildToNodeAtStartAndSelect (src/Cursor/Forest.hs:364) [cursor]  forestCursorAddChildToNodeAtEndAndSelect (src/Cursor/Forest.hs:369) [cursor]  forestCursorAddChildNodeSingleToNodeAtPosAndSelect (src/Cursor/Forest.hs:374) [cursor]  forestCursorAddChildNodeSingleToNodeAtStartAndSelect (src/Cursor/Forest.hs:378) [cursor]  forestCursorAddChildNodeSingleToNodeAtEndAndSelect (src/Cursor/Forest.hs:382) [cursor]  forestCursorAddChildNodeToNodeAtPosAndSelect (src/Cursor/Forest.hs:386) [cursor]  forestCursorAddChildNodeToNodeAtStartAndSelect (src/Cursor/Forest.hs:390) [cursor]  forestCursorAddChildNodeToNodeAtEndAndSelect (src/Cursor/Forest.hs:394) [cursor]  forestCursorRemoveElemAndSelectPrev (src/Cursor/Forest.hs:398) [cursor]  forestCursorDeleteElemAndSelectNext (src/Cursor/Forest.hs:412) [cursor]  forestCursorRemoveElem (src/Cursor/Forest.hs:424) [cursor]  forestCursorDeleteElem (src/Cursor/Forest.hs:429) [cursor]  forestCursorRemoveSubTreeAndSelectPrev (src/Cursor/Forest.hs:434) [cursor]  forestCursorDeleteSubTreeAndSelectNext (src/Cursor/Forest.hs:449) [cursor]  forestCursorRemoveSubTree (src/Cursor/Forest.hs:462) [cursor]  forestCursorDeleteSubTree (src/Cursor/Forest.hs:467) [cursor]  forestCursorAddRoot (src/Cursor/Forest.hs:472) [cursor]  CTree (src/Cursor/Tree/Types.hs:102) [cursor]  makeCTree (src/Cursor/Tree/Types.hs:116) [cursor]  cTree (src/Cursor/Tree/Types.hs:119) [cursor]  rebuildCTree (src/Cursor/Tree/Types.hs:122) [cursor]  CForest (src/Cursor/Tree/Types.hs:125) [cursor]  makeCForest (src/Cursor/Tree/Types.hs:147) [cursor]  cForest (src/Cursor/Tree/Types.hs:150) [cursor]  rebuildCForest (src/Cursor/Tree/Types.hs:156) [cursor]  traverseForestCursor (src/Cursor/Forest.hs:750) [cursor]  foldForestCursor (src/Cursor/Forest.hs:753) [cursor]  4% ( 4 / 91) in 'Cursor.Simple.Forest' [cursor]  Missing documentation for: [cursor]  Module header [cursor]  ForestCursor (src/Cursor/Simple/Forest.hs:104) [cursor]  singletonForestCursor (src/Cursor/Forest.hs:123) [cursor]  makeForestCursor (src/Cursor/Simple/Forest.hs:106) [cursor]  rebuildForestCursor (src/Cursor/Simple/Forest.hs:109) [cursor]  drawForestCursor (src/Cursor/Forest.hs:132) [cursor]  mapForestCursor (src/Cursor/Simple/Forest.hs:112) [cursor]  forestCursorListCursorL (src/Cursor/Forest.hs:142) [cursor]  forestCursorSelectedTreeL (src/Cursor/Forest.hs:146) [cursor]  forestCursorSelectPrevTreeCursor (src/Cursor/Simple/Forest.hs:115) [cursor]  forestCursorSelectNextTreeCursor (src/Cursor/Simple/Forest.hs:118) [cursor]  forestCursorSelectFirstTreeCursor (src/Cursor/Simple/Forest.hs:121) [cursor]  forestCursorSelectLastTreeCursor (src/Cursor/Simple/Forest.hs:124) [cursor]  forestCursorSelectPrev (src/Cursor/Simple/Forest.hs:130) [cursor]  forestCursorSelectNext (src/Cursor/Simple/Forest.hs:127) [cursor]  forestCursorSelectPrevOnSameLevel (src/Cursor/Simple/Forest.hs:136) [cursor]  forestCursorSelectNextOnSameLevel (src/Cursor/Simple/Forest.hs:133) [cursor]  forestCursorSelectFirst (src/Cursor/Simple/Forest.hs:139) [cursor]  forestCursorSelectLast (src/Cursor/Simple/Forest.hs:142) [cursor]  forestCursorSelectFirstOnSameLevel (src/Cursor/Simple/Forest.hs:145) [cursor]  forestCursorSelectLastOnSameLevel (src/Cursor/Simple/Forest.hs:148) [cursor]  forestCursorSelectAbove (src/Cursor/Simple/Forest.hs:151) [cursor]  forestCursorSelectBelowAtPos (src/Cursor/Simple/Forest.hs:154) [cursor]  forestCursorSelectBelowAtStart (src/Cursor/Simple/Forest.hs:157) [cursor]  forestCursorSelectBelowAtEnd (src/Cursor/Simple/Forest.hs:160) [cursor]  forestCursorOpenCurrentForest (src/Cursor/Forest.hs:244) [cursor]  forestCursorCloseCurrentForest (src/Cursor/Forest.hs:247) [cursor]  forestCursorToggleCurrentForest (src/Cursor/Forest.hs:250) [cursor]  forestCursorOpenCurrentForestRecursively (src/Cursor/Forest.hs:253) [cursor]  forestCursorToggleCurrentForestRecursively (src/Cursor/Forest.hs:257) [cursor]  forestCursorSelection (src/Cursor/Forest.hs:236) [cursor]  forestCursorSelectIndex (src/Cursor/Simple/Forest.hs:163) [cursor]  forestCursorInsertEntireTree (src/Cursor/Forest.hs:261) [cursor]  forestCursorInsertAndSelectTreeCursor (src/Cursor/Simple/Forest.hs:166) [cursor]  forestCursorAppendEntireTree (src/Cursor/Forest.hs:269) [cursor]  forestCursorAppendAndSelectTreeCursor (src/Cursor/Simple/Forest.hs:169) [cursor]  forestCursorInsertTree (src/Cursor/Forest.hs:277) [cursor]  forestCursorAppendTree (src/Cursor/Forest.hs:287) [cursor]  forestCursorInsertAndSelectTree (src/Cursor/Simple/Forest.hs:172) [cursor]  forestCursorAppendAndSelectTree (src/Cursor/Simple/Forest.hs:175) [cursor]  forestCursorInsert (src/Cursor/Forest.hs:297) [cursor]  forestCursorAppend (src/Cursor/Forest.hs:311) [cursor]  forestCursorInsertAndSelect (src/Cursor/Simple/Forest.hs:178) [cursor]  forestCursorAppendAndSelect (src/Cursor/Simple/Forest.hs:187) [cursor]  forestCursorInsertNodeSingleAndSelect (src/Cursor/Simple/Forest.hs:181) [cursor]  forestCursorAppendNodeSingleAndSelect (src/Cursor/Simple/Forest.hs:190) [cursor]  forestCursorInsertNodeAndSelect (src/Cursor/Simple/Forest.hs:184) [cursor]  forestCursorAppendNodeAndSelect (src/Cursor/Simple/Forest.hs:193) [cursor]  forestCursorAddChildTreeToNodeAtPos (src/Cursor/Forest.hs:325) [cursor]  forestCursorAddChildTreeToNodeAtStart (src/Cursor/Forest.hs:328) [cursor]  forestCursorAddChildTreeToNodeAtEnd (src/Cursor/Forest.hs:331) [cursor]  forestCursorAddChildToNodeAtPos (src/Cursor/Forest.hs:335) [cursor]  forestCursorAddChildToNodeAtStart (src/Cursor/Forest.hs:338) [cursor]  forestCursorAddChildToNodeAtEnd (src/Cursor/Forest.hs:341) [cursor]  forestCursorAddChildTreeToNodeAtPosAndSelect (src/Cursor/Simple/Forest.hs:196) [cursor]  forestCursorAddChildTreeToNodeAtStartAndSelect (src/Cursor/Simple/Forest.hs:199) [cursor]  forestCursorAddChildTreeToNodeAtEndAndSelect (src/Cursor/Simple/Forest.hs:203) [cursor]  forestCursorAddChildToNodeAtPosAndSelect (src/Cursor/Simple/Forest.hs:206) [cursor]  forestCursorAddChildToNodeAtStartAndSelect (src/Cursor/Simple/Forest.hs:209) [cursor]  forestCursorAddChildToNodeAtEndAndSelect (src/Cursor/Simple/Forest.hs:212) [cursor]  forestCursorAddChildNodeSingleToNodeAtPosAndSelect (src/Cursor/Simple/Forest.hs:215) [cursor]  forestCursorAddChildNodeSingleToNodeAtStartAndSelect (src/Cursor/Simple/Forest.hs:218) [cursor]  forestCursorAddChildNodeSingleToNodeAtEndAndSelect (src/Cursor/Simple/Forest.hs:221) [cursor]  forestCursorAddChildNodeToNodeAtPosAndSelect (src/Cursor/Simple/Forest.hs:224) [cursor]  forestCursorAddChildNodeToNodeAtStartAndSelect (src/Cursor/Simple/Forest.hs:227) [cursor]  forestCursorAddChildNodeToNodeAtEndAndSelect (src/Cursor/Simple/Forest.hs:230) [cursor]  forestCursorRemoveElemAndSelectPrev (src/Cursor/Simple/Forest.hs:233) [cursor]  forestCursorDeleteElemAndSelectNext (src/Cursor/Simple/Forest.hs:236) [cursor]  forestCursorRemoveElem (src/Cursor/Simple/Forest.hs:239) [cursor]  forestCursorDeleteElem (src/Cursor/Simple/Forest.hs:242) [cursor]  forestCursorRemoveSubTreeAndSelectPrev (src/Cursor/Simple/Forest.hs:245) [cursor]  forestCursorDeleteSubTreeAndSelectNext (src/Cursor/Simple/Forest.hs:248) [cursor]  forestCursorRemoveSubTree (src/Cursor/Simple/Forest.hs:251) [cursor]  forestCursorDeleteSubTree (src/Cursor/Simple/Forest.hs:254) [cursor]  forestCursorAddRoot (src/Cursor/Simple/Forest.hs:257) [cursor]  forestCursorPromoteElem (src/Cursor/Simple/Forest.hs:260) [cursor]  forestCursorPromoteSubTree (src/Cursor/Simple/Forest.hs:263) [cursor]  forestCursorDemoteElem (src/Cursor/Simple/Forest.hs:266) [cursor]  forestCursorDemoteSubTree (src/Cursor/Simple/Forest.hs:269) [cursor]  CTree (src/Cursor/Tree/Types.hs:102) [cursor]  makeCTree (src/Cursor/Tree/Types.hs:116) [cursor]  cTree (src/Cursor/Tree/Types.hs:119) [cursor]  rebuildCTree (src/Cursor/Tree/Types.hs:122) [cursor]  CForest (src/Cursor/Tree/Types.hs:125) [cursor]  makeCForest (src/Cursor/Tree/Types.hs:147) [cursor]  cForest (src/Cursor/Tree/Types.hs:150) [cursor]  rebuildCForest (src/Cursor/Tree/Types.hs:156) [cursor] Documentation created: dist/doc/html/cursor/, dist/doc/html/cursor/cursor.txt [cursor] Phase: installPhase [cursor] Installing library in /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor] Phase: fixupPhase [cursor] shrinking RPATHs of ELF executables and libraries in /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0 [cursor] shrinking /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/libHScursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg-ghc9.6.5.so [cursor] checking for references to /build/ in /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0... [cursor] patching script interpreter paths in /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0 [cursor] stripping (with command strip and flags -S -p) in /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/lib [cursor] shrinking RPATHs of ELF executables and libraries in /nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc [cursor] checking for references to /build/ in /nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc... [cursor] patching script interpreter paths in /nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc [post-build-hook] Uploading to cachix cache "cursor": /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0 /nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc [post-build-hook] Pushing 2 paths (71 are already present) using zstd to cache cursor ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0 (10.76 MiB) [post-build-hook] Pushing /nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc (4.85 MiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0 /nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc [post-build-hook] copying 2 paths... [post-build-hook] copying path '/nix/store/lyybcxiz19axiilpm4lg5vwp9hmqp1nr-cursor-0.3.2.0-doc' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/m4mdgxxz7lsf6zbwbhl8qyqa0kqd923a-cursor-0.3.2.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 2 of 6 built, 19 of 19 downloaded from cache Building cursor-gen-source [cursor-gen-source] Phase: setupCompilerEnvironmentPhase [cursor-gen-source] Build with /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5. [cursor-gen-source] Phase: unpackPhase [cursor-gen-source] unpacking source archive /nix/store/zr91qcy7vh6f07g44v03gchz5zlvgwpq-cursor-gen [cursor-gen-source] source root is cursor-gen [cursor-gen-source] Phase: patchPhase [cursor-gen-source] Phase: compileBuildDriverPhase [cursor-gen-source] setupCompileFlags: -package-db=/build/tmp.JamKO88dam/setup-package.conf.d -threaded [cursor-gen-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.JamKO88dam/Main.o ) [cursor-gen-source] [2 of 2] Linking Setup [cursor-gen-source] Phase: updateAutotoolsGnuConfigScriptsPhase [cursor-gen-source] Phase: configurePhase [cursor-gen-source] configureFlags: --verbose --prefix=/nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/share/doc/cursor-gen-0.4.0.0 --with-gcc=gcc --package-db=/build/tmp.JamKO88dam/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-option=-Wall --ghc-option=-Werror --extra-lib-dirs=/nix/store/zmi2nlx42h1qrs2v7yn142dq4zjq30im-ncurses-6.4/lib --extra-lib-dirs=/nix/store/gniy4ab9wcijxjpcciddgpzdwq3v3dnb-libffi-3.4.6/lib --extra-lib-dirs=/nix/store/jsizfglsm40vsjc81xnm3wa0rxshpnz0-elfutils-0.191/lib --extra-lib-dirs=/nix/store/s8q3rch0wd3shdnznz9bcj8mj6pvz1gr-gmp-with-cxx-6.3.0/lib [cursor-gen-source] Using Parsec parser [cursor-gen-source] Configuring cursor-gen-0.4.0.0... [cursor-gen-source] Dependency QuickCheck: using QuickCheck-2.14.3 [cursor-gen-source] Dependency base <5: using base-4.18.2.1 [cursor-gen-source] Dependency containers: using containers-0.6.7 [cursor-gen-source] Dependency cursor >=0.2: using cursor-0.3.2.0 [cursor-gen-source] Dependency genvalidity >=0.8: using genvalidity-1.1.0.0 [cursor-gen-source] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.1 [cursor-gen-source] Dependency genvalidity-text >=0.6: using genvalidity-text-1.0.0.1 [cursor-gen-source] Dependency text: using text-2.0.2 [cursor-gen-source] Dependency QuickCheck: using QuickCheck-2.14.3 [cursor-gen-source] Dependency base <5: using base-4.18.2.1 [cursor-gen-source] Dependency containers: using containers-0.6.7 [cursor-gen-source] Dependency cursor: using cursor-0.3.2.0 [cursor-gen-source] Dependency cursor-gen: using cursor-gen-0.4.0.0 [cursor-gen-source] Dependency genvalidity-hspec: using genvalidity-hspec-1.0.0.3 [cursor-gen-source] Dependency genvalidity-hspec-optics: using genvalidity-hspec-optics-1.0.0.0 [cursor-gen-source] Dependency hspec: using hspec-2.11.8 [cursor-gen-source] Dependency microlens: using microlens-0.4.13.1 [cursor-gen-source] Dependency pretty-show: using pretty-show-1.10 [cursor-gen-source] Dependency text: using text-2.0.2 [cursor-gen-source] Source component graph: [cursor-gen-source]  component lib [cursor-gen-source]  component test:cursor-test dependency lib [cursor-gen-source] Configured component graph: [cursor-gen-source]  component cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen-source]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen-source]  include base-4.18.2.1 [cursor-gen-source]  include containers-0.6.7 [cursor-gen-source]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen-source]  include genvalidity-1.1.0.0-Hnrz93nLqnV1SyLJgLbhb7 [cursor-gen-source]  include genvalidity-containers-1.0.0.1-A1si27ik5cZLPNLxFEVzUA [cursor-gen-source]  include genvalidity-text-1.0.0.1-3SFLc4HohSp9CVrwpSodsq [cursor-gen-source]  include text-2.0.2 [cursor-gen-source]  component cursor-gen-0.4.0.0-LAJqmYs3kyM7GA9SUqEQKd-cursor-test [cursor-gen-source]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen-source]  include base-4.18.2.1 [cursor-gen-source]  include containers-0.6.7 [cursor-gen-source]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen-source]  include cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen-source]  include genvalidity-hspec-1.0.0.3-LlORI2pXlyl7xhUmBdQ5k2 [cursor-gen-source]  include genvalidity-hspec-optics-1.0.0.0-2k9FjOjjrnhb7A6Q37VLX [cursor-gen-source]  include hspec-2.11.8-79uMZ5cowBYG3Ct2joOIyM [cursor-gen-source]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-gen-source]  include pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz [cursor-gen-source]  include text-2.0.2 [cursor-gen-source] Linked component graph: [cursor-gen-source]  unit cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen-source]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen-source]  include base-4.18.2.1 [cursor-gen-source]  include containers-0.6.7 [cursor-gen-source]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen-source]  include genvalidity-1.1.0.0-Hnrz93nLqnV1SyLJgLbhb7 [cursor-gen-source]  include genvalidity-containers-1.0.0.1-A1si27ik5cZLPNLxFEVzUA [cursor-gen-source]  include genvalidity-text-1.0.0.1-3SFLc4HohSp9CVrwpSodsq [cursor-gen-source]  include text-2.0.2 [cursor-gen-source]  Cursor.Forest.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Forest.Gen,Cursor.List.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.List.Gen,Cursor.List.NonEmpty.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.List.NonEmpty.Gen,Cursor.Map.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Map.Gen,Cursor.Map.KeyValue.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Map.KeyValue.Gen,Cursor.Simple.Forest.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Forest.Gen,Cursor.Simple.List.NonEmpty.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.List.NonEmpty.Gen,Cursor.Simple.Map.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Map.Gen,Cursor.Simple.Map.KeyValue.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Map.KeyValue.Gen,Cursor.Simple.Tree.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Tree.Gen,Cursor.Text.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Text.Gen,Cursor.TextField.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.TextField.Gen,Cursor.Tree.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Tree.Gen [cursor-gen-source]  unit cursor-gen-0.4.0.0-LAJqmYs3kyM7GA9SUqEQKd-cursor-test [cursor-gen-source]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen-source]  include base-4.18.2.1 [cursor-gen-source]  include containers-0.6.7 [cursor-gen-source]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen-source]  include cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen-source]  include genvalidity-hspec-1.0.0.3-LlORI2pXlyl7xhUmBdQ5k2 [cursor-gen-source]  include genvalidity-hspec-optics-1.0.0.0-2k9FjOjjrnhb7A6Q37VLX [cursor-gen-source]  include hspec-2.11.8-79uMZ5cowBYG3Ct2joOIyM [cursor-gen-source]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-gen-source]  include pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz [cursor-gen-source]  include text-2.0.2 [cursor-gen-source] Ready component graph: [cursor-gen-source]  definite cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen-source]  depends QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen-source]  depends base-4.18.2.1 [cursor-gen-source]  depends containers-0.6.7 [cursor-gen-source]  depends cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen-source]  depends genvalidity-1.1.0.0-Hnrz93nLqnV1SyLJgLbhb7 [cursor-gen-source]  depends genvalidity-containers-1.0.0.1-A1si27ik5cZLPNLxFEVzUA [cursor-gen-source]  depends genvalidity-text-1.0.0.1-3SFLc4HohSp9CVrwpSodsq [cursor-gen-source]  depends text-2.0.2 [cursor-gen-source]  definite cursor-gen-0.4.0.0-LAJqmYs3kyM7GA9SUqEQKd-cursor-test [cursor-gen-source]  depends QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen-source]  depends base-4.18.2.1 [cursor-gen-source]  depends containers-0.6.7 [cursor-gen-source]  depends cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen-source]  depends cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen-source]  depends genvalidity-hspec-1.0.0.3-LlORI2pXlyl7xhUmBdQ5k2 [cursor-gen-source]  depends genvalidity-hspec-optics-1.0.0.0-2k9FjOjjrnhb7A6Q37VLX [cursor-gen-source]  depends hspec-2.11.8-79uMZ5cowBYG3Ct2joOIyM [cursor-gen-source]  depends microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-gen-source]  depends pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz [cursor-gen-source]  depends text-2.0.2 [cursor-gen-source] Using Cabal-3.10.3.0 compiled by ghc-9.6 [cursor-gen-source] Using compiler: ghc-9.6.5 [cursor-gen-source] Using install prefix: [cursor-gen-source] /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0 [cursor-gen-source] Executables installed in: [cursor-gen-source] /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0/bin [cursor-gen-source] Libraries installed in: [cursor-gen-source] /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen-source] Dynamic Libraries installed in: [cursor-gen-source] /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5 [cursor-gen-source] Private executables installed in: [cursor-gen-source] /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0/libexec/x86_64-linux-ghc-9.6.5/cursor-gen-0.4.0.0 [cursor-gen-source] Data files installed in: [cursor-gen-source] /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0/share/x86_64-linux-ghc-9.6.5/cursor-gen-0.4.0.0 [cursor-gen-source] Documentation installed in: /share/doc/cursor-gen-0.4.0.0 [cursor-gen-source] Configuration files installed in: [cursor-gen-source] /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0/etc [cursor-gen-source] No alex found [cursor-gen-source] Using ar found on system at: [cursor-gen-source] /nix/store/z34dss3rj1rnp1g820r64w0na7452jy1-binutils-2.41/bin/ar [cursor-gen-source] No c2hs found [cursor-gen-source] No cpphs found [cursor-gen-source] No doctest found [cursor-gen-source] Using gcc version 13.2.0 given by user at: [cursor-gen-source] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/gcc [cursor-gen-source] Using ghc version 9.6.5 found on system at: [cursor-gen-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc [cursor-gen-source] Using ghc-pkg version 9.6.5 found on system at: [cursor-gen-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc-pkg-9.6.5 [cursor-gen-source] No ghcjs found [cursor-gen-source] No ghcjs-pkg found [cursor-gen-source] No greencard found [cursor-gen-source] Using haddock version 2.29.2 found on system at: [cursor-gen-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/haddock-ghc-9.6.5 [cursor-gen-source] No happy found [cursor-gen-source] Using haskell-suite found on system at: haskell-suite-dummy-location [cursor-gen-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [cursor-gen-source] No hmake found [cursor-gen-source] Using hpc version 0.68 found on system at: [cursor-gen-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hpc-ghc-9.6.5 [cursor-gen-source] Using hsc2hs version 0.68.9 found on system at: [cursor-gen-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hsc2hs-ghc-9.6.5 [cursor-gen-source] Using hscolour version 1.25 found on system at: [cursor-gen-source] /nix/store/i9w3cy6bda04c89yh2wk5l5mwhddihsf-hscolour-1.25/bin/HsColour [cursor-gen-source] No jhc found [cursor-gen-source] Using ld found on system at: [cursor-gen-source] /nix/store/rl56awy2w2iwvgdmibv98k0vx7lzyw21-binutils-wrapper-2.41/bin/ld.gold [cursor-gen-source] No pkg-config found [cursor-gen-source] Using runghc version 9.6.5 found on system at: [cursor-gen-source] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/runghc-9.6.5 [cursor-gen-source] Using strip version 2.41 found on system at: [cursor-gen-source] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/strip [cursor-gen-source] Using tar found on system at: [cursor-gen-source] /nix/store/llalnjlyrj2zv12q5bjy8cagqv70j73y-gnutar-1.35/bin/tar [cursor-gen-source] No uhc found [cursor-gen-source] Phase: buildPhase [cursor-gen-source] Building source dist for cursor-gen-0.4.0.0... [cursor-gen-source] Source tarball created: dist/cursor-gen-0.4.0.0.tar.gz [cursor-gen-source] Phase: checkPhase [cursor-gen-source] Phase: haddockPhase [cursor-gen-source] Phase: installPhase [cursor-gen-source] Phase: fixupPhase [post-build-hook] Uploading to cachix cache "cursor": /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0 [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache cursor ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0 (19.02 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0 [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying 13 paths... [post-build-hook] copying path '/nix/store/4x716cyimz3i6swyq1vwpmlindzc820l-genvalidity-hspec-1.0.0.3.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/cz4m7amks9g7hzb313qwv7wqi9d652pk-genvalidity-hspec-optics-1.0.0.0.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/rm2jrx00a21lw17f05vf3rc4l6i2gp5r-genvalidity-containers-1.0.0.1.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/x060kimdwg928yy4qkhl62jjfic9hx0k-genvalidity-1.1.0.0.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/x8dlg6ax44zb7ryk18q5z2hk1xkj19ih-genvalidity-property-1.0.0.0.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/vhfj6ykc62xxrbvlpi5sxzhw95v6nnkf-genvalidity-text-1.0.0.1.tar.gz.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/q4hn3f9h4yq0q99bnl39ry8n8f3ii70n-genvalidity-1.1.0.0.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/7gz2hh1ry87giik0hbcbkal17dzz0c87-genvalidity-property-1.0.0.0.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/q663kd03fxy8fhkl6z2sn8gn1g4xhyf7-genvalidity-hspec-1.0.0.3.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/z38v0a47b29p9ncj0lgm8pw7r6gzba7k-genvalidity-containers-1.0.0.1.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/pp6phbfswhgycj4lllip9yjcfksb7fgb-genvalidity-hspec-optics-1.0.0.0.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/p6ypaz8j74wbgmc8nfpqgcbsm1v9k08y-genvalidity-text-1.0.0.1.drv' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/kns8s0y47vr597ni4airmwc4sxblrpvg-cursor-gen-source-0.4.0.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 3 of 6 built, 19 of 19 downloaded from cache Building cursor-gen [cursor-gen] Phase: setupCompilerEnvironmentPhase [cursor-gen] Build with /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5. [cursor-gen] Phase: unpackPhase [cursor-gen] unpacking source archive /nix/store/vlr5x2vqsrg3x7pwfqs061s8wsnma27x-cursor-gen-source-0.4.0.0/cursor-gen-0.4.0.0.tar.gz [cursor-gen] source root is cursor-gen-0.4.0.0 [cursor-gen] setting SOURCE_DATE_EPOCH to timestamp 1780346400 of file cursor-gen-0.4.0.0/test/Spec.hs [cursor-gen] warning: file cursor-gen-0.4.0.0/test/Spec.hs may be generated; SOURCE_DATE_EPOCH may be non-deterministic [cursor-gen] Phase: patchPhase [cursor-gen] Phase: compileBuildDriverPhase [cursor-gen] setupCompileFlags: -package-db=/build/tmp.aWMku2BFDC/setup-package.conf.d -threaded [cursor-gen] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.aWMku2BFDC/Main.o ) [cursor-gen] [2 of 2] Linking Setup [cursor-gen] Phase: updateAutotoolsGnuConfigScriptsPhase [cursor-gen] Phase: configurePhase [cursor-gen] configureFlags: --verbose --prefix=/nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc/share/doc/cursor-gen-0.4.0.0 --with-gcc=gcc --package-db=/build/tmp.aWMku2BFDC/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-option=-Wall --ghc-option=-Werror --extra-lib-dirs=/nix/store/zmi2nlx42h1qrs2v7yn142dq4zjq30im-ncurses-6.4/lib --extra-lib-dirs=/nix/store/gniy4ab9wcijxjpcciddgpzdwq3v3dnb-libffi-3.4.6/lib --extra-lib-dirs=/nix/store/jsizfglsm40vsjc81xnm3wa0rxshpnz0-elfutils-0.191/lib --extra-lib-dirs=/nix/store/s8q3rch0wd3shdnznz9bcj8mj6pvz1gr-gmp-with-cxx-6.3.0/lib [cursor-gen] Using Parsec parser [cursor-gen] Configuring cursor-gen-0.4.0.0... [cursor-gen] Dependency QuickCheck: using QuickCheck-2.14.3 [cursor-gen] Dependency base <5: using base-4.18.2.1 [cursor-gen] Dependency containers: using containers-0.6.7 [cursor-gen] Dependency cursor >=0.2: using cursor-0.3.2.0 [cursor-gen] Dependency genvalidity >=0.8: using genvalidity-1.1.0.0 [cursor-gen] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.1 [cursor-gen] Dependency genvalidity-text >=0.6: using genvalidity-text-1.0.0.1 [cursor-gen] Dependency text: using text-2.0.2 [cursor-gen] Dependency QuickCheck: using QuickCheck-2.14.3 [cursor-gen] Dependency base <5: using base-4.18.2.1 [cursor-gen] Dependency containers: using containers-0.6.7 [cursor-gen] Dependency cursor: using cursor-0.3.2.0 [cursor-gen] Dependency cursor-gen: using cursor-gen-0.4.0.0 [cursor-gen] Dependency genvalidity-hspec: using genvalidity-hspec-1.0.0.3 [cursor-gen] Dependency genvalidity-hspec-optics: using genvalidity-hspec-optics-1.0.0.0 [cursor-gen] Dependency hspec: using hspec-2.11.8 [cursor-gen] Dependency microlens: using microlens-0.4.13.1 [cursor-gen] Dependency pretty-show: using pretty-show-1.10 [cursor-gen] Dependency text: using text-2.0.2 [cursor-gen] Source component graph: [cursor-gen]  component lib [cursor-gen]  component test:cursor-test dependency lib [cursor-gen] Configured component graph: [cursor-gen]  component cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen]  include base-4.18.2.1 [cursor-gen]  include containers-0.6.7 [cursor-gen]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen]  include genvalidity-1.1.0.0-Hnrz93nLqnV1SyLJgLbhb7 [cursor-gen]  include genvalidity-containers-1.0.0.1-A1si27ik5cZLPNLxFEVzUA [cursor-gen]  include genvalidity-text-1.0.0.1-3SFLc4HohSp9CVrwpSodsq [cursor-gen]  include text-2.0.2 [cursor-gen]  component cursor-gen-0.4.0.0-LAJqmYs3kyM7GA9SUqEQKd-cursor-test [cursor-gen]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen]  include base-4.18.2.1 [cursor-gen]  include containers-0.6.7 [cursor-gen]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen]  include cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen]  include genvalidity-hspec-1.0.0.3-LlORI2pXlyl7xhUmBdQ5k2 [cursor-gen]  include genvalidity-hspec-optics-1.0.0.0-2k9FjOjjrnhb7A6Q37VLX [cursor-gen]  include hspec-2.11.8-79uMZ5cowBYG3Ct2joOIyM [cursor-gen]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-gen]  include pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz [cursor-gen]  include text-2.0.2 [cursor-gen] Linked component graph: [cursor-gen]  unit cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen]  include base-4.18.2.1 [cursor-gen]  include containers-0.6.7 [cursor-gen]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen]  include genvalidity-1.1.0.0-Hnrz93nLqnV1SyLJgLbhb7 [cursor-gen]  include genvalidity-containers-1.0.0.1-A1si27ik5cZLPNLxFEVzUA [cursor-gen]  include genvalidity-text-1.0.0.1-3SFLc4HohSp9CVrwpSodsq [cursor-gen]  include text-2.0.2 [cursor-gen]  Cursor.Forest.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Forest.Gen,Cursor.List.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.List.Gen,Cursor.List.NonEmpty.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.List.NonEmpty.Gen,Cursor.Map.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Map.Gen,Cursor.Map.KeyValue.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Map.KeyValue.Gen,Cursor.Simple.Forest.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Forest.Gen,Cursor.Simple.List.NonEmpty.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.List.NonEmpty.Gen,Cursor.Simple.Map.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Map.Gen,Cursor.Simple.Map.KeyValue.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Map.KeyValue.Gen,Cursor.Simple.Tree.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Simple.Tree.Gen,Cursor.Text.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Text.Gen,Cursor.TextField.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.TextField.Gen,Cursor.Tree.Gen=cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5:Cursor.Tree.Gen [cursor-gen]  unit cursor-gen-0.4.0.0-LAJqmYs3kyM7GA9SUqEQKd-cursor-test [cursor-gen]  include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen]  include base-4.18.2.1 [cursor-gen]  include containers-0.6.7 [cursor-gen]  include cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen]  include cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen]  include genvalidity-hspec-1.0.0.3-LlORI2pXlyl7xhUmBdQ5k2 [cursor-gen]  include genvalidity-hspec-optics-1.0.0.0-2k9FjOjjrnhb7A6Q37VLX [cursor-gen]  include hspec-2.11.8-79uMZ5cowBYG3Ct2joOIyM [cursor-gen]  include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-gen]  include pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz [cursor-gen]  include text-2.0.2 [cursor-gen] Ready component graph: [cursor-gen]  definite cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen]  depends QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen]  depends base-4.18.2.1 [cursor-gen]  depends containers-0.6.7 [cursor-gen]  depends cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen]  depends genvalidity-1.1.0.0-Hnrz93nLqnV1SyLJgLbhb7 [cursor-gen]  depends genvalidity-containers-1.0.0.1-A1si27ik5cZLPNLxFEVzUA [cursor-gen]  depends genvalidity-text-1.0.0.1-3SFLc4HohSp9CVrwpSodsq [cursor-gen]  depends text-2.0.2 [cursor-gen]  definite cursor-gen-0.4.0.0-LAJqmYs3kyM7GA9SUqEQKd-cursor-test [cursor-gen]  depends QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew [cursor-gen]  depends base-4.18.2.1 [cursor-gen]  depends containers-0.6.7 [cursor-gen]  depends cursor-0.3.2.0-JCYfA8ASkKCCJgzHKxm8tg [cursor-gen]  depends cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen]  depends genvalidity-hspec-1.0.0.3-LlORI2pXlyl7xhUmBdQ5k2 [cursor-gen]  depends genvalidity-hspec-optics-1.0.0.0-2k9FjOjjrnhb7A6Q37VLX [cursor-gen]  depends hspec-2.11.8-79uMZ5cowBYG3Ct2joOIyM [cursor-gen]  depends microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI [cursor-gen]  depends pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz [cursor-gen]  depends text-2.0.2 [cursor-gen] Using Cabal-3.10.3.0 compiled by ghc-9.6 [cursor-gen] Using compiler: ghc-9.6.5 [cursor-gen] Using install prefix: [cursor-gen] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0 [cursor-gen] Executables installed in: [cursor-gen] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/bin [cursor-gen] Libraries installed in: [cursor-gen] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen] Dynamic Libraries installed in: [cursor-gen] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5 [cursor-gen] Private executables installed in: [cursor-gen] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/libexec/x86_64-linux-ghc-9.6.5/cursor-gen-0.4.0.0 [cursor-gen] Data files installed in: [cursor-gen] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/share/x86_64-linux-ghc-9.6.5/cursor-gen-0.4.0.0 [cursor-gen] Documentation installed in: [cursor-gen] /nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc/share/doc/cursor-gen-0.4.0.0 [cursor-gen] Configuration files installed in: [cursor-gen] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/etc [cursor-gen] No alex found [cursor-gen] Using ar found on system at: [cursor-gen] /nix/store/z34dss3rj1rnp1g820r64w0na7452jy1-binutils-2.41/bin/ar [cursor-gen] No c2hs found [cursor-gen] No cpphs found [cursor-gen] No doctest found [cursor-gen] Using gcc version 13.2.0 given by user at: [cursor-gen] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/gcc [cursor-gen] Using ghc version 9.6.5 found on system at: [cursor-gen] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc [cursor-gen] Using ghc-pkg version 9.6.5 found on system at: [cursor-gen] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/ghc-pkg-9.6.5 [cursor-gen] No ghcjs found [cursor-gen] No ghcjs-pkg found [cursor-gen] No greencard found [cursor-gen] Using haddock version 2.29.2 found on system at: [cursor-gen] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/haddock-ghc-9.6.5 [cursor-gen] No happy found [cursor-gen] Using haskell-suite found on system at: haskell-suite-dummy-location [cursor-gen] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [cursor-gen] No hmake found [cursor-gen] Using hpc version 0.68 found on system at: [cursor-gen] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hpc-ghc-9.6.5 [cursor-gen] Using hsc2hs version 0.68.9 found on system at: [cursor-gen] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/hsc2hs-ghc-9.6.5 [cursor-gen] Using hscolour version 1.25 found on system at: [cursor-gen] /nix/store/i9w3cy6bda04c89yh2wk5l5mwhddihsf-hscolour-1.25/bin/HsColour [cursor-gen] No jhc found [cursor-gen] Using ld found on system at: [cursor-gen] /nix/store/rl56awy2w2iwvgdmibv98k0vx7lzyw21-binutils-wrapper-2.41/bin/ld.gold [cursor-gen] No pkg-config found [cursor-gen] Using runghc version 9.6.5 found on system at: [cursor-gen] /nix/store/w66yphwmcsvxl2h91kv7cdrcp81vd295-ghc-9.6.5/bin/runghc-9.6.5 [cursor-gen] Using strip version 2.41 found on system at: [cursor-gen] /nix/store/rdc1jnyw74mwr2gszqc5zwi433zxs089-gcc-wrapper-13.2.0/bin/strip [cursor-gen] Using tar found on system at: [cursor-gen] /nix/store/llalnjlyrj2zv12q5bjy8cagqv70j73y-gnutar-1.35/bin/tar [cursor-gen] No uhc found [cursor-gen] Phase: buildPhase [cursor-gen] Preprocessing library for cursor-gen-0.4.0.0.. [cursor-gen] Building library for cursor-gen-0.4.0.0.. [cursor-gen] [ 1 of 14] Compiling Cursor.List.Gen ( src/Cursor/List/Gen.hs, dist/build/Cursor/List/Gen.o, dist/build/Cursor/List/Gen.dyn_o ) [cursor-gen] [ 2 of 14] Compiling Cursor.List.NonEmpty.Gen ( src/Cursor/List/NonEmpty/Gen.hs, dist/build/Cursor/List/NonEmpty/Gen.o, dist/build/Cursor/List/NonEmpty/Gen.dyn_o ) [cursor-gen] [ 3 of 14] Compiling Cursor.Map.KeyValue.Gen ( src/Cursor/Map/KeyValue/Gen.hs, dist/build/Cursor/Map/KeyValue/Gen.o, dist/build/Cursor/Map/KeyValue/Gen.dyn_o ) [cursor-gen] [ 4 of 14] Compiling Cursor.Map.Gen ( src/Cursor/Map/Gen.hs, dist/build/Cursor/Map/Gen.o, dist/build/Cursor/Map/Gen.dyn_o ) [cursor-gen] [ 5 of 14] Compiling Cursor.Simple.List.NonEmpty.Gen ( src/Cursor/Simple/List/NonEmpty/Gen.hs, dist/build/Cursor/Simple/List/NonEmpty/Gen.o, dist/build/Cursor/Simple/List/NonEmpty/Gen.dyn_o ) [cursor-gen] [ 6 of 14] Compiling Cursor.Simple.Map.Gen ( src/Cursor/Simple/Map/Gen.hs, dist/build/Cursor/Simple/Map/Gen.o, dist/build/Cursor/Simple/Map/Gen.dyn_o ) [cursor-gen] [ 7 of 14] Compiling Cursor.Simple.Map.KeyValue.Gen ( src/Cursor/Simple/Map/KeyValue/Gen.hs, dist/build/Cursor/Simple/Map/KeyValue/Gen.o, dist/build/Cursor/Simple/Map/KeyValue/Gen.dyn_o ) [cursor-gen] [ 8 of 14] Compiling Cursor.Text.Gen ( src/Cursor/Text/Gen.hs, dist/build/Cursor/Text/Gen.o, dist/build/Cursor/Text/Gen.dyn_o ) [cursor-gen] [ 9 of 14] Compiling Cursor.TextField.Gen ( src/Cursor/TextField/Gen.hs, dist/build/Cursor/TextField/Gen.o, dist/build/Cursor/TextField/Gen.dyn_o ) [cursor-gen] [10 of 14] Compiling Cursor.Tree.Gen ( src/Cursor/Tree/Gen.hs, dist/build/Cursor/Tree/Gen.o, dist/build/Cursor/Tree/Gen.dyn_o ) [cursor-gen] [11 of 14] Compiling Cursor.Simple.Tree.Gen ( src/Cursor/Simple/Tree/Gen.hs, dist/build/Cursor/Simple/Tree/Gen.o, dist/build/Cursor/Simple/Tree/Gen.dyn_o ) [cursor-gen] [12 of 14] Compiling Cursor.Forest.Gen ( src/Cursor/Forest/Gen.hs, dist/build/Cursor/Forest/Gen.o, dist/build/Cursor/Forest/Gen.dyn_o ) [cursor-gen] [13 of 14] Compiling Cursor.Simple.Forest.Gen ( src/Cursor/Simple/Forest/Gen.hs, dist/build/Cursor/Simple/Forest/Gen.o, dist/build/Cursor/Simple/Forest/Gen.dyn_o ) [cursor-gen] [14 of 14] Compiling Paths_cursor_gen ( dist/build/autogen/Paths_cursor_gen.hs, dist/build/Paths_cursor_gen.o, dist/build/Paths_cursor_gen.dyn_o ) [cursor-gen] [ 1 of 14] Compiling Cursor.List.Gen ( src/Cursor/List/Gen.hs, dist/build/Cursor/List/Gen.p_o ) [cursor-gen] [ 2 of 14] Compiling Cursor.List.NonEmpty.Gen ( src/Cursor/List/NonEmpty/Gen.hs, dist/build/Cursor/List/NonEmpty/Gen.p_o ) [cursor-gen] [ 3 of 14] Compiling Cursor.Map.KeyValue.Gen ( src/Cursor/Map/KeyValue/Gen.hs, dist/build/Cursor/Map/KeyValue/Gen.p_o ) [cursor-gen] [ 4 of 14] Compiling Cursor.Map.Gen ( src/Cursor/Map/Gen.hs, dist/build/Cursor/Map/Gen.p_o ) [cursor-gen] [ 5 of 14] Compiling Cursor.Simple.List.NonEmpty.Gen ( src/Cursor/Simple/List/NonEmpty/Gen.hs, dist/build/Cursor/Simple/List/NonEmpty/Gen.p_o ) [cursor-gen] [ 6 of 14] Compiling Cursor.Simple.Map.Gen ( src/Cursor/Simple/Map/Gen.hs, dist/build/Cursor/Simple/Map/Gen.p_o ) [cursor-gen] [ 7 of 14] Compiling Cursor.Simple.Map.KeyValue.Gen ( src/Cursor/Simple/Map/KeyValue/Gen.hs, dist/build/Cursor/Simple/Map/KeyValue/Gen.p_o ) [cursor-gen] [ 8 of 14] Compiling Cursor.Text.Gen ( src/Cursor/Text/Gen.hs, dist/build/Cursor/Text/Gen.p_o ) [cursor-gen] [ 9 of 14] Compiling Cursor.TextField.Gen ( src/Cursor/TextField/Gen.hs, dist/build/Cursor/TextField/Gen.p_o ) [cursor-gen] [10 of 14] Compiling Cursor.Tree.Gen ( src/Cursor/Tree/Gen.hs, dist/build/Cursor/Tree/Gen.p_o ) [cursor-gen] [11 of 14] Compiling Cursor.Simple.Tree.Gen ( src/Cursor/Simple/Tree/Gen.hs, dist/build/Cursor/Simple/Tree/Gen.p_o ) [cursor-gen] [12 of 14] Compiling Cursor.Forest.Gen ( src/Cursor/Forest/Gen.hs, dist/build/Cursor/Forest/Gen.p_o ) [cursor-gen] [13 of 14] Compiling Cursor.Simple.Forest.Gen ( src/Cursor/Simple/Forest/Gen.hs, dist/build/Cursor/Simple/Forest/Gen.p_o ) [cursor-gen] [14 of 14] Compiling Paths_cursor_gen ( dist/build/autogen/Paths_cursor_gen.hs, dist/build/Paths_cursor_gen.p_o ) [cursor-gen] Preprocessing test suite 'cursor-test' for cursor-gen-0.4.0.0.. [cursor-gen] Building test suite 'cursor-test' for cursor-gen-0.4.0.0.. [cursor-gen] [ 1 of 22] Compiling Cursor.List.NonEmptySpec ( test/Cursor/List/NonEmptySpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/List/NonEmptySpec.o ) [cursor-gen] [ 2 of 22] Compiling Cursor.ListSpec ( test/Cursor/ListSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/ListSpec.o ) [cursor-gen] [ 3 of 22] Compiling Cursor.Map.KeyValueSpec ( test/Cursor/Map/KeyValueSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Map/KeyValueSpec.o ) [cursor-gen] [ 4 of 22] Compiling Cursor.MapSpec ( test/Cursor/MapSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/MapSpec.o ) [cursor-gen] [ 5 of 22] Compiling Cursor.Simple.ForestSpec ( test/Cursor/Simple/ForestSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/ForestSpec.o ) [cursor-gen] [ 6 of 22] Compiling Cursor.Simple.List.NonEmptySpec ( test/Cursor/Simple/List/NonEmptySpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/List/NonEmptySpec.o ) [cursor-gen] [ 7 of 22] Compiling Cursor.Simple.Map.KeyValueSpec ( test/Cursor/Simple/Map/KeyValueSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Map/KeyValueSpec.o ) [cursor-gen] [ 8 of 22] Compiling Cursor.Simple.MapSpec ( test/Cursor/Simple/MapSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/MapSpec.o ) [cursor-gen] [ 9 of 22] Compiling Cursor.Simple.Tree.CollapseSpec ( test/Cursor/Simple/Tree/CollapseSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/CollapseSpec.o ) [cursor-gen] [10 of 22] Compiling Cursor.Simple.Tree.InsertSpec ( test/Cursor/Simple/Tree/InsertSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/InsertSpec.o ) [cursor-gen] [11 of 22] Compiling Cursor.Simple.Tree.TestUtils ( test/Cursor/Simple/Tree/TestUtils.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/TestUtils.o ) [cursor-gen] [12 of 22] Compiling Cursor.Simple.Tree.SwapSpec ( test/Cursor/Simple/Tree/SwapSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/SwapSpec.o ) [cursor-gen] [13 of 22] Compiling Cursor.Simple.Tree.PromoteSpec ( test/Cursor/Simple/Tree/PromoteSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/PromoteSpec.o ) [cursor-gen] [14 of 22] Compiling Cursor.Simple.Tree.MovementSpec ( test/Cursor/Simple/Tree/MovementSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/MovementSpec.o ) [cursor-gen] [15 of 22] Compiling Cursor.Simple.Tree.DemoteSpec ( test/Cursor/Simple/Tree/DemoteSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/DemoteSpec.o ) [cursor-gen] [16 of 22] Compiling Cursor.Simple.Tree.DeleteSpec ( test/Cursor/Simple/Tree/DeleteSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/DeleteSpec.o ) [cursor-gen] [17 of 22] Compiling Cursor.Simple.Tree.BaseSpec ( test/Cursor/Simple/Tree/BaseSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/BaseSpec.o ) [cursor-gen] [18 of 22] Compiling Cursor.TextFieldSpec ( test/Cursor/TextFieldSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/TextFieldSpec.o ) [cursor-gen] [19 of 22] Compiling Cursor.TextSpec ( test/Cursor/TextSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/TextSpec.o ) [cursor-gen] [20 of 22] Compiling Cursor.Tree.TypesSpec ( test/Cursor/Tree/TypesSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Tree/TypesSpec.o ) [cursor-gen] [21 of 22] Compiling Main ( test/Spec.hs, dist/build/cursor-test/cursor-test-tmp/Main.o ) [cursor-gen] [22 of 22] Compiling Paths_cursor_gen ( dist/build/cursor-test/autogen/Paths_cursor_gen.hs, dist/build/cursor-test/cursor-test-tmp/Paths_cursor_gen.o ) [cursor-gen] [23 of 23] Linking dist/build/cursor-test/cursor-test [cursor-gen] Phase: checkPhase [cursor-gen] Running 1 test suites... [cursor-gen] Test suite cursor-test: RUNNING... [cursor-gen]  [cursor-gen] Cursor.List [cursor-gen]  Eq (ListCursor Bool) [cursor-gen]  (==) :: (ListCursor Bool) -> (ListCursor Bool) -> Bool [cursor-gen]  is reflexive for "valid (ListCursor Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (ListCursor Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (ListCursor Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (ListCursor Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (ListCursor Bool) -> (ListCursor Bool) -> Bool [cursor-gen]  is antireflexive for "valid (ListCursor Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (ListCursor Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Functor ListCursor [cursor-gen]  fmap :: (a -> b) -> ListCursor a -> ListCursor b [cursor-gen]  satisfies the first Fuctor law: 'fmap id == id' for "ListCursor of ints :: (ListCursor Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "ListCursor of ints :: (ListCursor Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (<$) :: a -> ListCursor b -> ListCursor a [cursor-gen]  is equivalent to its default implementation for "int :: Int" and "ListCursor of ints :: (ListCursor Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (ListCursor Bool) [cursor-gen]  genValid :: Gen (ListCursor Bool) [cursor-gen]  only generates valid '(ListCursor Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  emptyListCursor [cursor-gen]  is valid [✔] [cursor-gen]  makeListCursor [cursor-gen]  produces valid list cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeListCursorWithSelection [cursor-gen]  produces valid list cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildListCursor [cursor-gen]  produces valid lists [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeListCursor [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeListCursorWithSelection for any index [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorNull [cursor-gen]  produces valid bools [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorLength [cursor-gen]  produces valid bools [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorIndex [cursor-gen]  produces valid indices [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorSelectPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorSelectNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorSelectIndex [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the position at the given index [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorPrevItem [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the item before the position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorNextItem [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the item after the position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorPrevUntil [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces a cursor where the previous item either satisfies the predicate or is empty [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorNextUntil [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces a cursor where the previous item either satisfies the predicate or is empty [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorSelectStart [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the starting position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorSelectEnd [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the end position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorInsert [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts an item before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorAppend [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts an item after the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorInsertList [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorAppendList [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorRemove [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes an item before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorDelete [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes an item before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  listCursorSplit [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces two list cursors that rebuild to the rebuilding of the original [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  listCursorCombine [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces a list that rebuilds to the rebuilding of the original two cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.List.NonEmpty [cursor-gen]  nonemptyPrepend [cursor-gen]  is equivalent to regular prepend [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  nonemptyAppend [cursor-gen]  is equivalent to regular append [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Map [cursor-gen]  Eq (MapCursor Bool Bool Bool Bool) [cursor-gen]  (==) :: (MapCursor Bool Bool Bool Bool) -> (MapCursor Bool Bool Bool Bool) -> Bool [cursor-gen]  is reflexive for "valid (MapCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (MapCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (MapCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (MapCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (MapCursor Bool Bool Bool Bool) -> (MapCursor Bool Bool Bool Bool) -> Bool [cursor-gen]  is antireflexive for "valid (MapCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (MapCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (MapCursor Bool Bool Bool Bool) [cursor-gen]  genValid :: Gen (MapCursor Bool Bool Bool Bool) [cursor-gen]  only generates valid '(MapCursor Bool Bool Bool Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Map.KeyValue [cursor-gen]  Eq (KeyValueCursor Bool Bool Bool Bool) [cursor-gen]  (==) :: (KeyValueCursor Bool Bool Bool Bool) -> (KeyValueCursor Bool Bool Bool Bool) -> Bool [cursor-gen]  is reflexive for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (KeyValueCursor Bool Bool Bool Bool) -> (KeyValueCursor Bool Bool Bool Bool) -> Bool [cursor-gen]  is antireflexive for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (KeyValueCursor Bool Bool Bool Bool) [cursor-gen]  genValid :: Gen (KeyValueCursor Bool Bool Bool Bool) [cursor-gen]  only generates valid '(KeyValueCursor Bool Bool Bool Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq KeyValueToggle [cursor-gen]  (==) :: KeyValueToggle -> KeyValueToggle -> Bool [cursor-gen]  is reflexive for "valid KeyValueToggle"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid KeyValueToggle"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid KeyValueToggle"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid KeyValueToggle"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: KeyValueToggle -> KeyValueToggle -> Bool [cursor-gen]  is antireflexive for "valid KeyValueToggle"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid KeyValueToggle"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid KeyValueToggle [cursor-gen]  genValid :: Gen KeyValueToggle [cursor-gen]  only generates valid 'KeyValueToggle's [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Simple.Forest [cursor-gen]  Eq (ForestCursor Int Int) [cursor-gen]  (==) :: (ForestCursor Int Int) -> (ForestCursor Int Int) -> Bool [cursor-gen]  is reflexive for "valid (ForestCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (ForestCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (ForestCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (ForestCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (ForestCursor Int Int) -> (ForestCursor Int Int) -> Bool [cursor-gen]  is antireflexive for "valid (ForestCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (ForestCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (ForestCursor Bool Bool) [cursor-gen]  genValid :: Gen (ForestCursor Bool Bool) [cursor-gen]  only generates valid '(ForestCursor Bool Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (ForestCursor Bool Bool -> [ForestCursor Bool Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 50 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 50 tests. [cursor-gen]  singletonForestCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeForestCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildForestCursor [cursor-gen]  produces valid forests [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeForestCursor for integers [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorLestCursorL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorSelectedTreeL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorSelection [cursor-gen]  produces valid ints [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the index of the currently selected element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectIndex [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the identity function when given the current selection [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns selects the element at the given index [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectPrevTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous tree cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectNextTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next tree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectFirstTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first tree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectLastTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last tree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  Works for this classic example without any collapsing [✔] [cursor-gen]  forestCursorSelectNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  Works for this classic example [✔] [cursor-gen]  forestCursorSelectPrevOnSameLevel [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous node on the same level as the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectNextOnSameLevel [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next node on the same level as the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectFirstOnSameLevel [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous node on the same level as the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectLastOnSameLevel [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next node on the same level as the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectFirst [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first node in the forest [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectLast [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last node in the forest [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectAbove [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the parent [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectBelowAtPos [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement for any index [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the child of the selected node at the given position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectBelowAtStart [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first child of the selected node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSelectBelowAtEnd [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first child of the selected node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorOpenCurrentForest [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorCloseCurrentForest [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorToggleCurrentForest [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorOpenCurrentForestRecursively [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorToggleCurrentForestRecursively [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorInsertEntireTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a tree cursor before the currently selected tree cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorInsertAndSelectTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a tree cursor before the currently selected tree cursor and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppendEntireTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a tree after the currently selected tree cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppendAndSelectTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a tree cursor after the currently selected tree cursor and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorInsertTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a tree before the currently selected tree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorInsertAndSelectTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a tree before the currently selected tree and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppendTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a tree after the currently selected tree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppendAndSelectTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a tree after the currently selected tree and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorInsert [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a node before the currently selected node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorInsertAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a node before the currently selected node and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorInsertNodeSingleAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a node before the currently selected node and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorInsertNodeAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a node before the currently selected node and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppend [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a node after the currently selected node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppendAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a node after the currently selected node and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppendNodeSingleAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a node after the currently selected node and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAppendNodeAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a node after the currently selected node and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildTreeToNodeAtPos [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child tree to a node at the given position in the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildTreeToNodeAtStart [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child tree to a node at the start the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildTreeToNodeAtEnd [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child tree to a node at the end the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildToNodeAtPos [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child to a node at the given position in the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildToNodeAtStart [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child to a node at the start the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildToNodeAtEnd [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child to a node at the end the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildTreeToNodeAtPosAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child tree to a node at the given position in the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildTreeToNodeAtStartAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child tree to a node at the start the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildTreeToNodeAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child tree to a node at the end the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildToNodeAtPosAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child to a node at the given position in the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildToNodeAtStartAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child to a node at the start the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildToNodeAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a child to a node at the end the children of that node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorAddChildNodeSingleToNodeAtPosAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorAddChildNodeSingleToNodeAtStartAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorAddChildNodeSingleToNodeAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorAddChildNodeToNodeAtPosAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorAddChildNodeToNodeAtStartAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorAddChildNodeToNodeAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorAddRoot [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  houses the entire forest under the given node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorSwapPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the docs [✔] [cursor-gen]  swaps the current node with the previous node on the same level [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  reverts forestCursorSwapNext [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorSwapNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the docs [✔] [cursor-gen]  swaps the current node with the next node on the same level [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  reverts forestCursorSwapPrev [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  forestCursorRemoveElemAndSelectPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this simple example [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes the selected element and selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDeleteElemAndSelectNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this simple example [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the selected element and selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorRemoveElem [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this simple example [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes the selected element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDeleteElem [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this simple example [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the selected element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorRemoveSubTreeAndSelectPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes the selected subtree and selects the previous tree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDeleteSubTreeAndSelectNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the selected subtree and selects the next tree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorRemoveSubTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes the selected subtree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDeleteSubTree [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the selected subtree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorPromoteElem [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the documentation [✔] [cursor-gen]  promotes the current node to the level of its parent [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDemoteElem [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the documentation [✔] [cursor-gen]  demotes the current node to the level of its children [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorPromoteSubTree [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the documentation [✔] [cursor-gen]  promotes the current subtree to the level of its parent [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDemoteSubTree [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the documentation [✔] [cursor-gen]  demotes the current subtree to the level of its children [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDemoteElemUnder [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  demotes the current node to the level of its children [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  forestCursorDemoteSubTreeUnder [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  demotes the current subtree to the level of its children, by adding a root [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen] Cursor.Simple.List.NonEmpty [cursor-gen]  Eq (NonEmptyCursor Bool Bool) [cursor-gen]  (==) :: (NonEmptyCursor Bool Bool) -> (NonEmptyCursor Bool Bool) -> Bool [cursor-gen]  is reflexive for "valid (NonEmptyCursor Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (NonEmptyCursor Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (NonEmptyCursor Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (NonEmptyCursor Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (NonEmptyCursor Bool Bool) -> (NonEmptyCursor Bool Bool) -> Bool [cursor-gen]  is antireflexive for "valid (NonEmptyCursor Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (NonEmptyCursor Bool Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (NonEmptyCursor Bool Bool) [cursor-gen]  genValid :: Gen (NonEmptyCursor Bool Bool) [cursor-gen]  only generates valid '(NonEmptyCursor Bool Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeNonEmptyCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeNonEmptyCursorWithSelection [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of rebuildNonEmptyCursor when using the current selection [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  singletonNonEmptyCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildNonEmptyCursor [cursor-gen]  produces valid nonempty lists [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeNonEmptyCursor for integers [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeNonEmptyCursorWithSelection for integers, for any index [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  nonEmptyCursorElemL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  nonEmptyCursorSelectPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorSelectNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorSelectFirst [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorSelectLast [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorSelection [cursor-gen]  produces valid ints [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the index of the currently selected element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorSelectIndex [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the identity function when given the current selection [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns selects the element at the given index [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorInsert [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorAppend [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character after the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorInsertAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character before the cursor and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorAppendAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a character before the cursor and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorInsertAtStart [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character at the start of the list [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorAppendAtEnd [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character at the end of the list [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorInsertAtStartAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character at the start of the list and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorAppendAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends a character at the end of the list and selects it [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorRemoveElem [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes an element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  nonEmptyCursorDeleteElem [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  nonEmptyCursorSearch [cursor-gen]  produces valid cursors when looking for an equal element [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is indeed the right value when it finds a value and is looking for an equal element [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  finds an element if it is in there [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  nonEmptyCursorSelectOrAdd [cursor-gen]  produces valid cursors when looking for an equal element [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Simple.Map [cursor-gen]  makeMapCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeMapCursorWithSelection [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  singletonMapCursorKey [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  singletonMapCursorValue [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildMapCursor [cursor-gen]  produces valid Nonempty lists [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeMapCursor for integers [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorNonEmptyCursorL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorElemL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorSelectKey [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorSelectValue [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorToggleSelected [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorSelectPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorSelectNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorSelectFirst [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorSelectLast [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorSelection [cursor-gen]  produces valid ints [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the index of the currently selected element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorSelectIndex [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the identity function when given the current selection [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns selects the element at the given index [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorInsert [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorAppend [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character after the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorInsertAndSelectKey [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorAppendAndSelectKey [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorInsertAndSelectValue [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorAppendAndSelectValue [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorRemoveElem [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes an element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorDeleteElem [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes an element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  mapCursorSearch [cursor-gen]  produces valid cursors when looking for an equal pair [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is indeed the right value when it finds a value and is looking for an equal element [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  mapCursorSelectOrAdd [cursor-gen]  produces valid cursors when looking for an equal element [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Simple.Map.KeyValue [cursor-gen]  makeKeyValueCursorKey [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeKeyValueCursorValue [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildKeyValueCursor [cursor-gen]  produces valid tuples [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  keyValueCursorSelection [cursor-gen]  produces valid selections [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  keyValueCursorSelectKey [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  keyValueCursorSelectValue [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  keyValueCursorToggleSelected [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Simple.Tree.Base [cursor-gen]  Eq (TreeCursor Int Int) [cursor-gen]  (==) :: (TreeCursor Int Int) -> (TreeCursor Int Int) -> Bool [cursor-gen]  is reflexive for "valid (TreeCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (TreeCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (TreeCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (TreeCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (TreeCursor Int Int) -> (TreeCursor Int Int) -> Bool [cursor-gen]  is antireflexive for "valid (TreeCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (TreeCursor Int Int)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (TreeCursor Bool Bool) [cursor-gen]  genValid :: Gen (TreeCursor Bool Bool) [cursor-gen]  only generates valid '(TreeCursor Bool Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeNodeTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeTreeCursorWithSelection [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  singletonTreeCursor [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildTreeCursor [cursor-gen]  produces valid trees [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeTreeCursor for integers [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeTreeCursorWithSelection for the current selection [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Simple.Tree.Collapse [cursor-gen]  treeCursorOpenCurrentForest [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorCloseCurrentForest [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorToggleCurrentForest [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorOpenCurrentForestRecursively [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorToggleCurrentForestRecursively [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.Simple.Tree.Delete [cursor-gen]  treeCursorDeleteSubTreeAndSelectPrevious [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current subtree selects the previous subtree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDeleteSubTreeAndSelectNext [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current subtree selects the next subtree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDeleteSubTreeAndSelectAbove [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current subtree selects the above node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorRemoveSubTree [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes the current subtree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDeleteSubTree [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current subtree [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDeleteElemAndSelectPrevious [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this simple example [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current element and selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDeleteElemAndSelectNext [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this simple example [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current element and selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDeleteElemAndSelectAbove [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this simple example [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current element and selects the above element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorRemoveElem [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes the current element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDeleteElem [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  deletes the current element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen] Cursor.Simple.Tree.Demote [cursor-gen]  Functor DemoteResult [cursor-gen]  fmap :: (a -> b) -> DemoteResult a -> DemoteResult b [cursor-gen]  satisfies the first Fuctor law: 'fmap id == id' for "DemoteResult of ints :: (DemoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "DemoteResult of ints :: (DemoteResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (<$) :: a -> DemoteResult b -> DemoteResult a [cursor-gen]  is equivalent to its default implementation for "int :: Int" and "DemoteResult of ints :: (DemoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorDemoteElem [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  demotes the current node to the level of its children [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDemoteSubTree [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  demotes the current subtree to the level of its children [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDemoteElemUnder [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  demotes the current node to the level of its children [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorDemoteSubTreeUnder [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  demotes the current subtree to the level of its children, by adding a root [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen] Cursor.Simple.Tree.Insert [cursor-gen]  treeCursorInsert [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorInsertAndSelect [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts and select the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorInsertNodeSingleAndSelect [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts and select the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorInsertNodeAndSelect [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts and select the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAppend [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAppendAndSelect [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends and select the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAppendNodeSingleAndSelect [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends and select the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAppendNodeAndSelect [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  appends and select the element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAddChildAtPos [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a tree at the given index in the children of the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAddChildAtStart [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a tree at the start of the children of the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAddChildAtEnd [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a tree at the end of the children of the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAddChildAtPosAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a tree at the given index in theAndSelect children of the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAddChildAtStartAndSelect [cursor-gen]  producesAndSelect valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a tree at the start of the children of the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAddChildAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  adds a tree at the end of the children of the current node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorAddChildNodeSingleAtPosAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorAddChildNodeSingleAtStartAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorAddChildNodeSingleAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorAddChildNodeAtPosAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorAddChildNodeAtStartAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this example [✔] [cursor-gen]  treeCursorAddChildNodeAtEndAndSelect [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this example [✔] [cursor-gen] Cursor.Simple.Tree.Movement [cursor-gen]  treeCursorSelection [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelect [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is identity with the current selection [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectPrevOnSameLevel [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  after treeCursorSelectNextOnSameLevel is identity if they don't fail [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectNextOnSameLevel [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  after treeCursorSelectPrevOnSameLevel is identity if they don't fail [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectFirstOnSameLevel [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorSelectNextOnSameLevel [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorSelectAbovePrev [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works for this classic example [✔] [cursor-gen]  selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  after treeCursorSelectAboveNext is identity if they don't fail [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectAboveNext [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works for this classic example [✔] [cursor-gen]  selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  after treeCursorSelectAbovePrev is identity if they don't fail [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectPrev [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  after treeCursorSelectNext is identity if they don't fail [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectNext [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  after treeCursorSelectPrev is identity if they don't fail [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectFirst [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectLast [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last element [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectAbove [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the element above [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  after treeCursorSelectBelow is identity if they don't fail [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSelectBelowAtPos [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the element n-th below [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorSelectBelowAtStart [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first child below [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorSelectBelowAtEnd [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last child below [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorSelectBelowAtStartRecursively [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first child below, recursively [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorSelectBelowAtEndRecursively [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last child below, recursively [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen] Cursor.Simple.Tree.Promote [cursor-gen]  Functor PromoteElemResult [cursor-gen]  fmap :: (a -> b) -> PromoteElemResult a -> PromoteElemResult b [cursor-gen]  satisfies the first Fuctor law: 'fmap id == id' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "PromoteElemResult of ints :: (PromoteElemResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (<$) :: a -> PromoteElemResult b -> PromoteElemResult a [cursor-gen]  is equivalent to its default implementation for "int :: Int" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Applicative PromoteElemResult [cursor-gen]  pure :: a -> PromoteElemResult a and (<*>) :: PromoteElemResult (a -> b) -> PromoteElemResult a -> PromoteElemResult b [cursor-gen]  satisfy the identity law: 'pure id <*> v = v' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "PromoteElemResult of scalings :: (PromoteElemResult (Int -> Int))" composed with "PromoteElemResult of increments :: (PromoteElemResult (Int -> Int))" and applied to "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "PromoteElemResult of increments :: (PromoteElemResult (Int -> Int))" sequenced with "int :: Int" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (*>) :: PromoteElemResult a -> PromoteElemResult b -> PromoteElemResult b [cursor-gen]  is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "PromoteElemResult of ints :: (PromoteElemResult Int)" in front of "PromoteElemResult of ints :: Int" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (<*) :: PromoteElemResult a -> PromoteElemResult b -> PromoteElemResult a [cursor-gen]  is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "PromoteElemResult of ints :: Int" behind "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Monad PromoteElemResult [cursor-gen]  return :: a -> PromoteElemResult a and (>>=) :: PromoteElemResult a -> (b -> PromoteElemResult a) -> PromoteElemResult b [cursor-gen]  satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the second Monad law: 'm >>= return = m' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (>>=) :: PromoteElemResult a -> (b -> PromoteElemResult a) -> PromoteElemResult b [cursor-gen]  satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "PromoteElemResult of ints :: (PromoteElemResult Int)" "perturbations using the int :: (Int -> PromoteElemResult Int)" and "perturbations using the double the int :: (Int -> PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  relation with Applicative PromoteElemResult [cursor-gen]  satisfies 'pure = return' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies '(<*>) = ap' for "PromoteElemResult of additions :: (PromoteElemResult (Int -> Int))" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies '(>>) = (*>)' for "PromoteElemResult of ints :: (PromoteElemResult Int)" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  relation with Functor PromoteElemResult [cursor-gen]  satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorPromoteElem [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  promotes the current node to the level of its parent [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  Functor PromoteResult [cursor-gen]  fmap :: (a -> b) -> PromoteResult a -> PromoteResult b [cursor-gen]  satisfies the first Fuctor law: 'fmap id == id' for "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "PromoteResult of ints :: (PromoteResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (<$) :: a -> PromoteResult b -> PromoteResult a [cursor-gen]  is equivalent to its default implementation for "int :: Int" and "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Applicative PromoteResult [cursor-gen]  pure :: a -> PromoteResult a and (<*>) :: PromoteResult (a -> b) -> PromoteResult a -> PromoteResult b [cursor-gen]  satisfy the identity law: 'pure id <*> v = v' for "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "PromoteResult of scalings :: (PromoteResult (Int -> Int))" composed with "PromoteResult of increments :: (PromoteResult (Int -> Int))" and applied to "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "PromoteResult of increments :: (PromoteResult (Int -> Int))" sequenced with "int :: Int" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (*>) :: PromoteResult a -> PromoteResult b -> PromoteResult b [cursor-gen]  is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "PromoteResult of ints :: (PromoteResult Int)" in front of "PromoteResult of ints :: Int" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (<*) :: PromoteResult a -> PromoteResult b -> PromoteResult a [cursor-gen]  is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "PromoteResult of ints :: Int" behind "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Monad PromoteResult [cursor-gen]  return :: a -> PromoteResult a and (>>=) :: PromoteResult a -> (b -> PromoteResult a) -> PromoteResult b [cursor-gen]  satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfy the second Monad law: 'm >>= return = m' for "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (>>=) :: PromoteResult a -> (b -> PromoteResult a) -> PromoteResult b [cursor-gen]  satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "PromoteResult of ints :: (PromoteResult Int)" "perturbations using the int :: (Int -> PromoteResult Int)" and "perturbations using the double the int :: (Int -> PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  relation with Applicative PromoteResult [cursor-gen]  satisfies 'pure = return' for "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies '(<*>) = ap' for "PromoteResult of additions :: (PromoteResult (Int -> Int))" and "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies '(>>) = (*>)' for "PromoteResult of ints :: (PromoteResult Int)" and "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  relation with Functor PromoteResult [cursor-gen]  satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "PromoteResult of ints :: (PromoteResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorPromoteSubTree [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Works on the example from the docs [✔] [cursor-gen]  promotes the current subtree to the level of its parent [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen] Cursor.Simple.Tree.Swap [cursor-gen]  Functor SwapResult [cursor-gen]  fmap :: (a -> b) -> SwapResult a -> SwapResult b [cursor-gen]  satisfies the first Fuctor law: 'fmap id == id' for "SwapResult of ints :: (SwapResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "SwapResult of ints :: (SwapResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (<$) :: a -> SwapResult b -> SwapResult a [cursor-gen]  is equivalent to its default implementation for "int :: Int" and "SwapResult of ints :: (SwapResult Int)" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorSwapPrev [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the docs [✔] [cursor-gen]  reverts treeCursorSwapNext [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  swaps the current node with the previous node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  treeCursorSwapNext [cursor-gen]  produces valids on valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works on the example from the docs [✔] [cursor-gen]  reverts treeCursorSwapNext [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  swaps the current node with the next node [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen] Cursor.Text [cursor-gen]  Eq TextCursor [cursor-gen]  (==) :: TextCursor -> TextCursor -> Bool [cursor-gen]  is reflexive for "valid TextCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid TextCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid TextCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid TextCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: TextCursor -> TextCursor -> Bool [cursor-gen]  is antireflexive for "valid TextCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid TextCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid TextCursor [cursor-gen]  genValid :: Gen TextCursor [cursor-gen]  only generates valid 'TextCursor's [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Validity TextCursor [cursor-gen]  considers a text cursor with a newline in the previous characters invalid [✔] [cursor-gen]  considers a text cursor with a newline in the next characters invalid [✔] [cursor-gen]  considers a text cursor with an unsafe character in the previous characters invalid [✔] [cursor-gen]  considers a text cursor with an unsafe character in the next characters invalid [✔] [cursor-gen]  emptyTextCursor [cursor-gen]  is valid [✔] [cursor-gen]  makeTextCursor [cursor-gen]  produces valid list cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeTextCursorWithSelection [cursor-gen]  produces valid list cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildTextCursor [cursor-gen]  produces valid lists [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeTextCursor [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeTextCursorWithSelection for any index [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorNull [cursor-gen]  produces valid bools [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorLength [cursor-gen]  produces valid ints [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorIndex [cursor-gen]  produces valid indices [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorSelectPrev [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorSelectNext [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorSelectIndex [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the position at the given index [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  produces a cursor that has the given selection for valid selections in the cursor [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorSelectStart [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the starting position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorSelectEnd [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the end position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorPrevChar [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the item before the position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorNextChar [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the item after the position [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorSelectBeginWord [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests (84% non trivial). [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  textCursorSelectEndWord [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests (84% non trivial). [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  textCursorSelectNextWord [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  goes to the end of the cursor [✔] [cursor-gen]  chooses the next word correctly [✔] [cursor-gen]  textCursorSelectPrevWord [cursor-gen]  produces valid items [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  works for this example [✔] [cursor-gen]  goes to the beginning of the cursor [✔] [cursor-gen]  chooses the previous word correctly [✔] [cursor-gen]  textCursorInsert [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts an item before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorAppend [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts an item after the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorInsertString [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  works for this example [✔] [cursor-gen]  textCursorAppendString [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorInsertText [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorAppendText [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorRemove [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes an item before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorDelete [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes an item before the cursor [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textCursorSplit [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces two list cursors that rebuild to the rebuilding of the original [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textCursorCombine [cursor-gen]  produces valids [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces a list that rebuilds to the rebuilding of the original two cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen] Cursor.TextField [cursor-gen]  Eq TextFieldCursor [cursor-gen]  (==) :: TextFieldCursor -> TextFieldCursor -> Bool [cursor-gen]  is reflexive for "valid TextFieldCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid TextFieldCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid TextFieldCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid TextFieldCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: TextFieldCursor -> TextFieldCursor -> Bool [cursor-gen]  is antireflexive for "valid TextFieldCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid TextFieldCursor"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid TextFieldCursor [cursor-gen]  genValid :: Gen TextFieldCursor [cursor-gen]  only generates valid 'TextFieldCursor's [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Validity TextFieldCursor [cursor-gen]  consider a textfield with a newline in the previous lines invalid [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  consider a textfield with a newline in the next lines invalid [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeTextFieldCursor [cursor-gen]  produces a valid cursor for "\n" [✔] [cursor-gen]  produces a valid cursor for "\n\n" [✔] [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  makeTextFieldCursorWithSelection [cursor-gen]  produces a valid cursor for "\n" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces a valid cursor for "\n\n" [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of rebuildTextFieldCursor when using the current selection [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildTextFieldCursorLines [cursor-gen]  produces valid lists [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces texts without newlines [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  rebuildTextFieldCursor [cursor-gen]  produces valid texts [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeTextFieldCursor [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is the inverse of makeTextFieldCursorWithSelection for integers, for any index [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textFieldCursorSelection [cursor-gen]  produces valid tuples [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  emptyTextFieldCursor [cursor-gen]  is valid [✔] [cursor-gen]  nullTextFieldCursor [cursor-gen]  produces valid [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textFieldCursorSelectPrevLine [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectNextLine [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the next line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectFirstLine [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the first line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectLastLine [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is a movement [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is idempotent [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the last line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectPrevChar [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous character on the current line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectNextChar [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the previous character on the current line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectBeginWord [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textFieldCursorSelectEndWord [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textFieldCursorSelectPrevWord [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textFieldCursorSelectNextWord [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textFieldCursorIndexOnLine [cursor-gen]  produces valid indices [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  returns the index on the current line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectIndexOnLine [cursor-gen]  produces valid cursors for any index [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the given index on the current line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorInsertChar [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character before the cursor on the current line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorAppendChar [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a character after the cursor on the currrent line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorInsertNewline [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  inserts a new line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorAppendNewline [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  textFieldCursorRemove [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes empty text field cursor [✔] [cursor-gen]  removes a character or a line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorDelete [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  removes empty text field cursor [✔] [cursor-gen]  deletes a character or a line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectStartOfLine [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the start of the current line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen]  textFieldCursorSelectEndOfLine [cursor-gen]  produces valid cursors [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  selects the end of the current line [‐] [cursor-gen]  # PENDING: No reason given [cursor-gen] Cursor.Tree.Types [cursor-gen]  Eq TreeCursorSelection [cursor-gen]  (==) :: TreeCursorSelection -> TreeCursorSelection -> Bool [cursor-gen]  is reflexive for "valid TreeCursorSelection"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid TreeCursorSelection"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid TreeCursorSelection"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid TreeCursorSelection"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: TreeCursorSelection -> TreeCursorSelection -> Bool [cursor-gen]  is antireflexive for "valid TreeCursorSelection"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid TreeCursorSelection"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid TreeCursorSelection [cursor-gen]  genValid :: Gen TreeCursorSelection [cursor-gen]  only generates valid 'TreeCursorSelection's [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (TreeCursorSelection -> [TreeCursorSelection]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (SwapResult Bool) [cursor-gen]  (==) :: (SwapResult Bool) -> (SwapResult Bool) -> Bool [cursor-gen]  is reflexive for "valid (SwapResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (SwapResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (SwapResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (SwapResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (SwapResult Bool) -> (SwapResult Bool) -> Bool [cursor-gen]  is antireflexive for "valid (SwapResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (SwapResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (SwapResult Bool) [cursor-gen]  genValid :: Gen (SwapResult Bool) [cursor-gen]  only generates valid '(SwapResult Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (SwapResult Bool -> [SwapResult Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (PromoteElemResult Bool) [cursor-gen]  (==) :: (PromoteElemResult Bool) -> (PromoteElemResult Bool) -> Bool [cursor-gen]  is reflexive for "valid (PromoteElemResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (PromoteElemResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (PromoteElemResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (PromoteElemResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (PromoteElemResult Bool) -> (PromoteElemResult Bool) -> Bool [cursor-gen]  is antireflexive for "valid (PromoteElemResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (PromoteElemResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (PromoteElemResult Bool) [cursor-gen]  genValid :: Gen (PromoteElemResult Bool) [cursor-gen]  only generates valid '(PromoteElemResult Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (PromoteElemResult Bool -> [PromoteElemResult Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (PromoteResult Bool) [cursor-gen]  (==) :: (PromoteResult Bool) -> (PromoteResult Bool) -> Bool [cursor-gen]  is reflexive for "valid (PromoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (PromoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (PromoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (PromoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (PromoteResult Bool) -> (PromoteResult Bool) -> Bool [cursor-gen]  is antireflexive for "valid (PromoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (PromoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (PromoteResult Bool) [cursor-gen]  genValid :: Gen (PromoteResult Bool) [cursor-gen]  only generates valid '(PromoteResult Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (PromoteResult Bool -> [PromoteResult Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (DemoteResult Bool) [cursor-gen]  (==) :: (DemoteResult Bool) -> (DemoteResult Bool) -> Bool [cursor-gen]  is reflexive for "valid (DemoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (DemoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (DemoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (DemoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (DemoteResult Bool) -> (DemoteResult Bool) -> Bool [cursor-gen]  is antireflexive for "valid (DemoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (DemoteResult Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (DemoteResult Bool) [cursor-gen]  genValid :: Gen (DemoteResult Bool) [cursor-gen]  only generates valid '(DemoteResult Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (DemoteResult Bool -> [DemoteResult Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (CTree Bool) [cursor-gen]  (==) :: (CTree Bool) -> (CTree Bool) -> Bool [cursor-gen]  is reflexive for "valid (CTree Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (CTree Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (CTree Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (CTree Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (CTree Bool) -> (CTree Bool) -> Bool [cursor-gen]  is antireflexive for "valid (CTree Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (CTree Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (CTree Bool) [cursor-gen]  genValid :: Gen (CTree Bool) [cursor-gen]  only generates valid '(CTree Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (CTree Bool -> [CTree Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (CForest Bool) [cursor-gen]  (==) :: (CForest Bool) -> (CForest Bool) -> Bool [cursor-gen]  is reflexive for "valid (CForest Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (CForest Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (CForest Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (CForest Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (CForest Bool) -> (CForest Bool) -> Bool [cursor-gen]  is antireflexive for "valid (CForest Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (CForest Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (CForest Bool) [cursor-gen]  genValid :: Gen (CForest Bool) [cursor-gen]  only generates valid '(CForest Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (CForest Bool -> [CForest Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (TreeAbove Bool) [cursor-gen]  (==) :: (TreeAbove Bool) -> (TreeAbove Bool) -> Bool [cursor-gen]  is reflexive for "valid (TreeAbove Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (TreeAbove Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (TreeAbove Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (TreeAbove Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (TreeAbove Bool) -> (TreeAbove Bool) -> Bool [cursor-gen]  is antireflexive for "valid (TreeAbove Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (TreeAbove Bool)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (TreeAbove Bool) [cursor-gen]  genValid :: Gen (TreeAbove Bool) [cursor-gen]  only generates valid '(TreeAbove Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (TreeAbove Bool -> [TreeAbove Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeAboveLeftsL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeAboveAboveL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeAboveNodeL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeAboveRightsL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  Eq (TreeCursor Bool Word) [cursor-gen]  (==) :: (TreeCursor Bool Word) -> (TreeCursor Bool Word) -> Bool [cursor-gen]  is reflexive for "valid (TreeCursor Bool Word)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is symmetric for "valid (TreeCursor Bool Word)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is transitive for "valid (TreeCursor Bool Word)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a /= b) for "valid (TreeCursor Bool Word)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  (/=) :: (TreeCursor Bool Word) -> (TreeCursor Bool Word) -> Bool [cursor-gen]  is antireflexive for "valid (TreeCursor Bool Word)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  is equivalent to (\a b -> not $ a == b) for "valid (TreeCursor Bool Word)"s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  GenValid (TreeCursor Bool Bool) [cursor-gen]  genValid :: Gen (TreeCursor Bool Bool) [cursor-gen]  only generates valid '(TreeCursor Bool Bool)'s [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  shrinkValid :: (TreeCursor Word Bool -> [TreeCursor Word Bool]) [cursor-gen]  preserves validity for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  never shrinks to itself for valid values for the first 10 elements [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorAboveL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorCurrentL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorBelowL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  treeCursorCurrentSubTreeL [cursor-gen]  satisfies the first lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the second lens law for valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  satisfies the third lens law for valid values and valid values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  gets valid values from valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  produces valid values when it is used to set valid values values on valid values values [✔] [cursor-gen]  +++ OK, passed 100 tests. [cursor-gen]  [cursor-gen] Finished in 3.9362 seconds [cursor-gen] 881 examples, 0 failures, 173 pending [cursor-gen] Test suite cursor-test: PASS [cursor-gen] Test suite logged to: dist/test/cursor-gen-0.4.0.0-cursor-test.log [cursor-gen] 1 of 1 test suites (1 of 1 test cases) passed. [cursor-gen] Phase: haddockPhase [cursor-gen] Preprocessing library for cursor-gen-0.4.0.0.. [cursor-gen] Running Haddock on library for cursor-gen-0.4.0.0.. [cursor-gen] Warning: --source-* options are ignored when --hyperlinked-source is enabled. [cursor-gen]  0% ( 0 / 3) in 'Cursor.List.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  listCursorWithGen (src/Cursor/List/Gen.hs:24) [cursor-gen]  listCursorWithIndex0 (src/Cursor/List/Gen.hs:27) [cursor-gen]  0% ( 0 / 5) in 'Cursor.List.NonEmpty.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  genNonEmptyCursorBy (src/Cursor/List/NonEmpty/Gen.hs:23) [cursor-gen]  nonEmptyElemOf (src/Cursor/List/NonEmpty/Gen.hs:37) [cursor-gen]  nonEmptyWithIndex0 (src/Cursor/List/NonEmpty/Gen.hs:40) [cursor-gen]  nonEmptyWith (src/Cursor/List/NonEmpty/Gen.hs:43) [cursor-gen]  0% ( 0 / 3) in 'Cursor.Map.KeyValue.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  genKeyValueCursorBy (src/Cursor/Map/KeyValue/Gen.hs:22) [cursor-gen]  genKeyValueCursorByDependent (src/Cursor/Map/KeyValue/Gen.hs:26) [cursor-gen]  0% ( 0 / 3) in 'Cursor.Map.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  genMapCursorBy (src/Cursor/Map/Gen.hs:20) [cursor-gen]  genMapCursorByDependent (src/Cursor/Map/Gen.hs:25) [cursor-gen]  0% ( 0 / 4) in 'Cursor.Simple.List.NonEmpty.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  nonEmptyElemOf (src/Cursor/Simple/List/NonEmpty/Gen.hs:12) [cursor-gen]  nonEmptyWithIndex0 (src/Cursor/Simple/List/NonEmpty/Gen.hs:15) [cursor-gen]  nonEmptyWith (src/Cursor/Simple/List/NonEmpty/Gen.hs:18) [cursor-gen]  0% ( 0 / 1) in 'Cursor.Simple.Map.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  0% ( 0 / 1) in 'Cursor.Simple.Map.KeyValue.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  0% ( 0 / 7) in 'Cursor.Text.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  genSafeChar (src/Cursor/Text/Gen.hs:26) [cursor-gen]  genTextCursorChar (src/Cursor/Text/Gen.hs:32) [cursor-gen]  textCursorSentenceGen (src/Cursor/Text/Gen.hs:41) [cursor-gen]  textCursorWithGen (src/Cursor/Text/Gen.hs:35) [cursor-gen]  textCursorWithIndex0 (src/Cursor/Text/Gen.hs:38) [cursor-gen]  shrinkSentence (src/Cursor/Text/Gen.hs:47) [cursor-gen]  0% ( 0 / 1) in 'Cursor.TextField.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  0% ( 0 / 1) in 'Cursor.Tree.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  0% ( 0 / 1) in 'Cursor.Simple.Tree.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  0% ( 0 / 1) in 'Cursor.Forest.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen]  0% ( 0 / 1) in 'Cursor.Simple.Forest.Gen' [cursor-gen]  Missing documentation for: [cursor-gen]  Module header [cursor-gen] Documentation created: dist/doc/html/cursor-gen/, [cursor-gen] dist/doc/html/cursor-gen/cursor-gen.txt [cursor-gen] Preprocessing test suite 'cursor-test' for cursor-gen-0.4.0.0.. [cursor-gen] Phase: installPhase [cursor-gen] Installing library in /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/cursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5 [cursor-gen] Phase: fixupPhase [cursor-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0 [cursor-gen] shrinking /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/lib/ghc-9.6.5/lib/x86_64-linux-ghc-9.6.5/libHScursor-gen-0.4.0.0-CDLiz7GCawTEocNcfHpwE5-ghc9.6.5.so [cursor-gen] checking for references to /build/ in /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0... [cursor-gen] patching script interpreter paths in /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0 [cursor-gen] stripping (with command strip and flags -S -p) in /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/lib [cursor-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc [cursor-gen] checking for references to /build/ in /nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc... [cursor-gen] patching script interpreter paths in /nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc [post-build-hook] Uploading to cachix cache "cursor": /nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0 [post-build-hook] Pushing 2 paths (85 are already present) using zstd to cache cursor ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc (489.75 KiB) [post-build-hook] Pushing /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0 (2.23 MiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0 [post-build-hook] copying 2 paths... [post-build-hook] copying path '/nix/store/mnc996djbqh3wmhc3gkjmn25d6v5s8ah-cursor-gen-0.4.0.0-doc' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/9h1sgj21zb81f5qmxaql5banvjkc7d68-cursor-gen-0.4.0.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 4 of 6 built, 19 of 19 downloaded from cache Building cursor-release [cursor-release] /nix/store/qm6mn50xy627i844lq8h5alpz26w8c99-cursor-gen-0.4.0.0/nix-support: [cursor-release] propagated-build-inputs: Keeping existing link to /nix/store/krb3zl4f99q4v3v15hxmwz2vrd8qj4y6-cursor-0.3.2.0/nix-support/propagated-build-inputs [post-build-hook] Uploading to cachix cache "cursor": /nix/store/wsl2kzkrdn3r195jpsn9h7137npvk1vp-cursor-release [post-build-hook] Pushing 1 paths (87 are already present) using zstd to cache cursor ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/wsl2kzkrdn3r195jpsn9h7137npvk1vp-cursor-release (49.54 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/wsl2kzkrdn3r195jpsn9h7137npvk1vp-cursor-release [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/wsl2kzkrdn3r195jpsn9h7137npvk1vp-cursor-release' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/zir8m0k63yf0ic2d408gkbk6abyvjm8j-cursor-release.drv' to 'https://cache.staging.nix-ci.com'... Progress: 5 of 6 built, 19 of 19 downloaded from cache