Running as unit: rb-build-amd64_18-23879.service ==================================================================================== Tue Nov 26 02:11:31 UTC 2024 - running /srv/jenkins/bin/reproducible_build.sh (for job reproducible_builder_amd64_18) on jenkins, called using "ionos5-amd64 ionos1-amd64" as arguments. Tue Nov 26 02:11:31 UTC 2024 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-aUmuToeD" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Tue Nov 26 02:11:31 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos5-amd64.debian.net is marked as down. Tue Nov 26 02:11:31 UTC 2024 - checking via ssh if ionos5-amd64.debian.net is up. removed '/tmp/read-only-fs-test-RSESd8' Tue Nov 26 02:11:31 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos1-amd64.debian.net is marked as down. Tue Nov 26 02:11:31 UTC 2024 - checking via ssh if ionos1-amd64.debian.net is up. removed '/tmp/read-only-fs-test-OT5r5R' ok, let's check if ruby-immutable-ruby is building anywhere yet… ok, ruby-immutable-ruby is not building anywhere… UPDATE 1 ============================================================================= Initialising reproducibly build of ruby-immutable-ruby in unstable on amd64 on jenkins now. 1st build will be done on ionos5-amd64.debian.net. 2nd build will be done on ionos1-amd64.debian.net. ============================================================================= Tue Nov 26 02:11:37 UTC 2024 I: starting to build ruby-immutable-ruby/unstable/amd64 on jenkins on '2024-11-26 02:11' Tue Nov 26 02:11:37 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/amd64_18/23879/console.log 1732587097 amd64 unstable ruby-immutable-ruby Tue Nov 26 02:11:37 UTC 2024 I: Downloading source for unstable/ruby-immutable-ruby=0.1.0-2 --2024-11-26 02:11:37-- http://deb.debian.org/debian/pool/main/r/ruby-immutable-ruby/ruby-immutable-ruby_0.1.0-2.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2161 (2.1K) [text/prs.lines.tag] Saving to: ‘ruby-immutable-ruby_0.1.0-2.dsc’ 0K .. 100% 257M=0s 2024-11-26 02:11:37 (257 MB/s) - ‘ruby-immutable-ruby_0.1.0-2.dsc’ saved [2161/2161] --2024-11-26 02:11:37-- http://deb.debian.org/debian/pool/main/r/ruby-immutable-ruby/ruby-immutable-ruby_0.1.0-2.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2161 (2.1K) [text/prs.lines.tag] Saving to: ‘ruby-immutable-ruby_0.1.0-2.dsc’ 0K .. 100% 257M=0s 2024-11-26 02:11:37 (257 MB/s) - ‘ruby-immutable-ruby_0.1.0-2.dsc’ saved [2161/2161] Tue Nov 26 02:11:37 UTC 2024 I: ruby-immutable-ruby_0.1.0-2.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: ruby-immutable-ruby Binary: ruby-immutable-ruby Architecture: all Version: 0.1.0-2 Maintainer: Debian Ruby Team Uploaders: Cédric Boutillier Homepage: https://github.com/immutable-ruby/immutable-ruby Standards-Version: 4.6.1 Vcs-Browser: https://salsa.debian.org/ruby-team/ruby-immutable-ruby Vcs-Git: https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git Testsuite: autopkgtest-pkg-ruby Build-Depends: debhelper-compat (= 13), gem2deb (>= 1), ruby-concurrent (>= 1.1), ruby-rspec, ruby-sorted-set (>= 1.0) Package-List: ruby-immutable-ruby deb ruby optional arch=all Checksums-Sha1: 7522a916561946ada35560ba5917e17dba8049a9 136552 ruby-immutable-ruby_0.1.0.orig.tar.gz 01e0f3217058feb23d39fa8765c73f09c5af3e5d 2840 ruby-immutable-ruby_0.1.0-2.debian.tar.xz Checksums-Sha256: 07685756543e1053f800432f234c580d51953367eacc3080e671b66d62aaa575 136552 ruby-immutable-ruby_0.1.0.orig.tar.gz deb0d63c37da0ab2917aad848678b866ab08dea0923f6ba884dcc73b55ec9f57 2840 ruby-immutable-ruby_0.1.0-2.debian.tar.xz Files: 2c807712b49f58c7d5836db83a613c40 136552 ruby-immutable-ruby_0.1.0.orig.tar.gz 1724ae52327a699333005440d1fe026f 2840 ruby-immutable-ruby_0.1.0-2.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEETQvhLw5HdtiqzpaW5mx3Wuv+bH0FAmUHXjIACgkQ5mx3Wuv+ bH1zoA//VxLI3ocaMFbr+jhbBwfkkDqYeLjjld+DHYs57P3JALJYuGVYUAIM5YXx LT9dw77j0CqLmlSN2FqhiGqeRk5fbTYyeONJBDIGi47/wuY/VBPAyZr5nZSR1sNX Ewimf+mBC1dZbdDfQp629ftZuWp+emUA6R+EuK2r1Yf8L/ivdUNqn4Qwgle7a9HJ JywH5JGPIq+MDXmWf7SBA7PSvE8VDe+qTP/P41Q8WzycXwqS6SCnmci1OoHYmoTf fB4FrTR2U6mSl2KVBmjLwK7pCVXkF1d4SDa8fsdY9ozMFYYf8NRSfy0nfwo4LENf gQJ1JeqVNhl3tEYptH5Vvb1+jamUMUTTUTopzakTwc5JXne8fp24voMhW9n4UJxm LwIt1issBjObMU4I6O590wGVPSQ4rfvrZUN9xM2TfqeM9AcLFlOawLJteGvSv6Wo Jmu0S1oC4pxhm4+SVW40mmlM0B3zHN9nMqrVYxBb9xZ4DMLNeaD/hpHF7xgOUO3+ 4nvLspHJYhCu8SCxJwwcAhNmFhFyNrsW+CE95Bl3EI+btjvl+ayf6V1GUiyM4FIP YazTyLNoSmPaaMpIJeMQKUyPGhXtiqJ6oiLCqjV5/0yzcUhvGUcnGCX+AqI5W/qH 5g1CZG4QzS9Aje4hQ7oe4w2sS+sIfE+XJ0flyUOUJ3O/IB9xhqI= =gbkK -----END PGP SIGNATURE----- Tue Nov 26 02:11:37 UTC 2024 I: Checking whether the package is not for us Tue Nov 26 02:11:37 UTC 2024 I: Starting 1st build on remote node ionos5-amd64.debian.net. Tue Nov 26 02:11:38 UTC 2024 I: Preparing to do remote build '1' on ionos5-amd64.debian.net. Tue Nov 26 02:11:38 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos5-amd64.debian.net is marked as down. Tue Nov 26 02:11:38 UTC 2024 - checking via ssh if ionos5-amd64.debian.net is up. removed '/tmp/read-only-fs-test-ljKUpN' ==================================================================================== Mon Dec 29 08:34:39 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos5-amd64, called using "1 ruby-immutable-ruby unstable /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ 0.1.0-2" as arguments. Mon Dec 29 08:34:39 UTC 2025 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-oIHwfR94" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Mon Dec 29 08:34:39 UTC 2025 I: Downloading source for unstable/ruby-immutable-ruby=0.1.0-2 Reading package lists... NOTICE: 'ruby-immutable-ruby' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git Please use: git clone https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 142 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (dsc) [2161 B] Get:2 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (tar) [137 kB] Get:3 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (diff) [2840 B] Fetched 142 kB in 0s (7109 kB/s) Download complete and in download only mode Reading package lists... NOTICE: 'ruby-immutable-ruby' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git Please use: git clone https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 142 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (dsc) [2161 B] Get:2 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (tar) [137 kB] Get:3 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (diff) [2840 B] Fetched 142 kB in 0s (7109 kB/s) Download complete and in download only mode ============================================================================= Building ruby-immutable-ruby in unstable on amd64 on ionos5-amd64 now. Date: Mon Dec 29 08:34:39 UTC 2025 Date UTC: Mon Dec 29 08:34:39 UTC 2025 ============================================================================= W: /root/.pbuilderrc does not exist I: Logging to b1/build.log I: pbuilder: network access will be disabled during build I: Current time: Sun Dec 28 20:34:39 -12 2025 I: pbuilder-time-stamp: 1766997279 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [ruby-immutable-ruby_0.1.0-2.dsc] I: copying [./ruby-immutable-ruby_0.1.0.orig.tar.gz] I: copying [./ruby-immutable-ruby_0.1.0-2.debian.tar.xz] I: Extracting source gpgv: Signature made Sun Sep 17 20:14:42 2023 gpgv: using RSA key 4D0BE12F0E4776D8AACE9696E66C775AEBFE6C7D gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./ruby-immutable-ruby_0.1.0-2.dsc: no acceptable signature found dpkg-source: info: extracting ruby-immutable-ruby in ruby-immutable-ruby-0.1.0 dpkg-source: info: unpacking ruby-immutable-ruby_0.1.0.orig.tar.gz dpkg-source: info: unpacking ruby-immutable-ruby_0.1.0-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying no-pry-in-specs.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1057230/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='888831b324c64179aebffbd32d0c7599' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='1057230' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/pbuilderrc_GNHn --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b1 --logfile b1/build.log ruby-immutable-ruby_0.1.0-2.dsc' SUDO_GID='110' SUDO_UID='105' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://213.165.73.152:3128' I: uname -a Linux ionos5-amd64 6.11.5+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.5-1~bpo12+1 (2024-11-11) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/1057230/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), gem2deb (>= 1), ruby-concurrent (>= 1.1), ruby-rspec, ruby-sorted-set (>= 1.0) dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19965 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on gem2deb (>= 1); however: Package gem2deb is not installed. pbuilder-satisfydepends-dummy depends on ruby-concurrent (>= 1.1); however: Package ruby-concurrent is not installed. pbuilder-satisfydepends-dummy depends on ruby-rspec; however: Package ruby-rspec is not installed. pbuilder-satisfydepends-dummy depends on ruby-sorted-set (>= 1.0); however: Package ruby-sorted-set is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} debhelper{a} devscripts{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dirmngr{a} dwz{a} file{a} gem2deb{a} gem2deb-test-runner{a} gettext{a} gettext-base{a} gnupg{a} gnupg-l10n{a} gpg{a} gpg-agent{a} gpgconf{a} gpgsm{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libassuan9{a} libb-hooks-op-check-perl{a} libclass-method-modifiers-perl{a} libclass-xsaccessor-perl{a} libclone-perl{a} libcom-err2{a} libdebhelper-perl{a} libdevel-callchecker-perl{a} libdynaloader-functions-perl{a} libedit2{a} libelf1t64{a} libencode-locale-perl{a} libexpat1{a} libfile-dirlist-perl{a} libfile-homedir-perl{a} libfile-listing-perl{a} libfile-stripnondeterminism-perl{a} libfile-touch-perl{a} libfile-which-perl{a} libgmp-dev{a} libgmpxx4ldbl{a} libgssapi-krb5-2{a} libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a} libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libicu72{a} libimport-into-perl{a} libio-html-perl{a} libio-pty-perl{a} libio-socket-ssl-perl{a} libipc-run-perl{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libksba8{a} libldap-2.5-0{a} liblwp-mediatypes-perl{a} liblwp-protocol-https-perl{a} libmagic-mgc{a} libmagic1t64{a} libmodule-runtime-perl{a} libmoo-perl{a} libncurses6{a} libnet-http-perl{a} libnet-ssleay-perl{a} libnpth0t64{a} libnsl2{a} libparams-classify-perl{a} libpipeline1{a} libpython3-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libreadline8t64{a} librole-tiny-perl{a} libruby{a} libruby3.1t64{a} libsasl2-2{a} libsasl2-modules-db{a} libsub-quote-perl{a} libtimedate-perl{a} libtirpc-common{a} libtirpc3t64{a} libtool{a} libtry-tiny-perl{a} libuchardet0{a} liburi-perl{a} libwww-perl{a} libwww-robotrules-perl{a} libxml2{a} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} openssl{a} patchutils{a} perl-openssl-defaults{a} pinentry-curses{a} po-debconf{a} python3{a} python3-minimal{a} python3.12{a} python3.12-minimal{a} rake{a} readline-common{a} ruby{a} ruby-all-dev{a} ruby-concurrent{a} ruby-diff-lcs{a} ruby-net-telnet{a} ruby-rbtree{a} ruby-rspec{a} ruby-rspec-core{a} ruby-rspec-expectations{a} ruby-rspec-mocks{a} ruby-rspec-support{a} ruby-rubygems{a} ruby-sdbm{a} ruby-sorted-set{a} ruby-webrick{a} ruby-xmlrpc{a} ruby3.1{a} ruby3.1-dev{a} rubygems-integration{a} sensible-utils{a} tzdata{a} wdiff{a} The following packages are RECOMMENDED but will NOT be installed: apt-file curl dctrl-tools debian-keyring dput dput-ng dupload equivs fonts-lato gnupg-utils gpg-wks-client krb5-locales libarchive-cpio-perl libdata-dump-perl libdistro-info-perl libgit-wrapper-perl libgitlab-api-v4-perl libgpm2 libhtml-form-perl libhtml-format-perl libhttp-daemon-perl libio-compress-brotli-perl libjs-jquery libjson-perl libldap-common liblist-compare-perl libltdl-dev libmail-sendmail-perl libmailtools-perl libnamespace-clean-perl libsasl2-modules libsoap-lite-perl libstring-shellquote-perl libxstring-perl licensecheck lintian lynx pristine-tar python3-apt python3-debian python3-magic python3-requests python3-unidiff python3-xdg ruby3.1-doc strace unzip wget zip 0 packages upgraded, 138 newly installed, 0 to remove and 0 not upgraded. Need to get 44.4 MB of archives. After unpacking 166 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.12-minimal amd64 3.12.7-3 [815 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.12-minimal amd64 3.12.7-3 [2162 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.12.7-1 [26.8 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2024b-3 [255 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-3 [32.5 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.1-1+b1 [23.2 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-3 [79.9 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 12 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-3 [324 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-3 [136 kB] Get: 14 http://deb.debian.org/debian unstable/main amd64 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 libtirpc3t64 amd64 1.3.4+ds-1.3+b1 [83.1 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 libnsl2 amd64 1.3.0-3+b3 [40.6 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-5 [69.3 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-5 [169 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 libpython3.12-stdlib amd64 3.12.7-3 [1966 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 python3.12 amd64 3.12.7-3 [671 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.12.7-1 [9712 B] Get: 22 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.12.7-1 [27.8 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.3.2-2 [1382 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20240203 [158 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.22.5-2 [200 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-5 [1181 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.2-11 [91.5 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-4 [287 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.22.5-2 [723 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.20 [89.7 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libtool all 2.4.7-8 [517 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 46 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-5+b1 [9423 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.22.5-2 [1601 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.20 [915 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libassuan9 amd64 3.0.1-2 [60.6 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 gpgconf amd64 2.2.45-2 [120 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libksba8 amd64 1.6.7-2+b1 [136 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-8 [19.6 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-8 [57.3 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 libldap-2.5-0 amd64 2.5.18+dfsg-3+b1 [188 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 libnpth0t64 amd64 1.6-3.1+b1 [18.2 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 dirmngr amd64 2.2.45-2 [368 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 gnupg-l10n all 2.2.45-2 [705 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 gpg amd64 2.2.45-2 [531 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 pinentry-curses amd64 1.2.1-4+b1 [79.7 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 gpg-agent amd64 2.2.45-2 [251 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 gpgsm amd64 2.2.45-2 [255 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 gnupg all 2.2.45-2 [376 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 libfile-dirlist-perl all 0.05-3 [7600 B] Get: 69 http://deb.debian.org/debian unstable/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libfile-touch-perl all 0.12-2 [8816 B] Get: 72 http://deb.debian.org/debian unstable/main amd64 libio-pty-perl amd64 1:1.20-1+b2 [34.3 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libipc-run-perl all 20231003.0-2 [101 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libclass-method-modifiers-perl all 2.15-1 [18.0 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 libclass-xsaccessor-perl amd64 1.19-4+b4 [36.1 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libb-hooks-op-check-perl amd64 0.22-3+b2 [10.6 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libdynaloader-functions-perl all 0.004-1 [12.1 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libdevel-callchecker-perl amd64 0.009-1+b1 [16.2 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libparams-classify-perl amd64 0.015-2+b4 [22.5 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libmodule-runtime-perl all 0.016-2 [19.6 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libimport-into-perl all 1.002005-2 [11.3 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 librole-tiny-perl all 2.002004-1 [21.4 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libsub-quote-perl all 2.006008-1 [21.8 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libmoo-perl all 2.005005-1 [58.0 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 libencode-locale-perl all 1.05-3 [12.9 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libhttp-date-perl all 6.06-1 [10.7 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 libfile-listing-perl all 6.16-1 [12.4 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 libhtml-tagset-perl all 3.24-1 [14.7 kB] Get: 90 http://deb.debian.org/debian unstable/main amd64 liburi-perl all 5.30-1 [105 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 libhtml-parser-perl amd64 3.83-1+b1 [99.7 kB] Get: 92 http://deb.debian.org/debian unstable/main amd64 libhtml-tree-perl all 5.07-3 [211 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libclone-perl amd64 0.47-1+b1 [13.9 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libio-html-perl all 1.004-3 [16.2 kB] Get: 95 http://deb.debian.org/debian unstable/main amd64 liblwp-mediatypes-perl all 6.04-2 [20.2 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libhttp-message-perl all 7.00-2 [79.8 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libhttp-cookies-perl all 6.11-1 [19.1 kB] Get: 98 http://deb.debian.org/debian unstable/main amd64 libhttp-negotiate-perl all 6.01-2 [13.1 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 perl-openssl-defaults amd64 7+b2 [6724 B] Get: 100 http://deb.debian.org/debian unstable/main amd64 libnet-ssleay-perl amd64 1.94-2 [339 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 libio-socket-ssl-perl all 2.089-1 [223 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 libnet-http-perl all 6.23-1 [23.9 kB] Get: 103 http://deb.debian.org/debian unstable/main amd64 liblwp-protocol-https-perl all 6.14-1 [10.8 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libtry-tiny-perl all 0.32-1 [22.9 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libwww-robotrules-perl all 6.02-1 [12.9 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libwww-perl all 6.77-1 [183 kB] Get: 107 http://deb.debian.org/debian unstable/main amd64 patchutils amd64 0.4.2-1 [77.5 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 wdiff amd64 1.2.2-6 [119 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 devscripts all 2.24.4 [1080 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 rubygems-integration all 1.18 [6704 B] Get: 111 http://deb.debian.org/debian unstable/main amd64 ruby-net-telnet all 0.2.0-1 [13.1 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 ruby-webrick all 1.8.1-1 [51.4 kB] Get: 113 http://deb.debian.org/debian unstable/main amd64 ruby-xmlrpc all 0.3.3-2 [24.4 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 libruby amd64 1:3.1+nmu1 [4664 B] Get: 115 http://deb.debian.org/debian unstable/main amd64 ruby-sdbm amd64 1.0.0-5+b5 [15.6 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20240808-1 [93.9 kB] Get: 117 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5-2+b1 [105 kB] Get: 118 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-1+b2 [52.7 kB] Get: 119 http://deb.debian.org/debian unstable/main amd64 libruby3.1t64 amd64 3.1.2-8.4 [5411 kB] Get: 120 http://deb.debian.org/debian unstable/main amd64 ruby3.1 amd64 3.1.2-8.4 [664 kB] Get: 121 http://deb.debian.org/debian unstable/main amd64 ruby-rubygems all 3.4.20-1 [309 kB] Get: 122 http://deb.debian.org/debian unstable/main amd64 ruby amd64 1:3.1+nmu1 [5584 B] Get: 123 http://deb.debian.org/debian unstable/main amd64 rake all 13.2.1-1 [65.2 kB] Get: 124 http://deb.debian.org/debian unstable/main amd64 gem2deb-test-runner amd64 2.2.5 [17.9 kB] Get: 125 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-2+b2 [329 kB] Get: 126 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-2+b2 [642 kB] Get: 127 http://deb.debian.org/debian unstable/main amd64 ruby3.1-dev amd64 3.1.2-8.4 [1002 kB] Get: 128 http://deb.debian.org/debian unstable/main amd64 ruby-all-dev amd64 1:3.1+nmu1 [5672 B] Get: 129 http://deb.debian.org/debian unstable/main amd64 gem2deb amd64 2.2.5 [48.0 kB] Get: 130 http://deb.debian.org/debian unstable/main amd64 ruby-concurrent all 1.2.3-4 [290 kB] Get: 131 http://deb.debian.org/debian unstable/main amd64 ruby-diff-lcs all 1.5.1-1 [28.1 kB] Get: 132 http://deb.debian.org/debian unstable/main amd64 ruby-rbtree amd64 0.4.6-1+b1 [22.3 kB] Get: 133 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-support all 3.13.0c0e0m0s1-2 [28.5 kB] Get: 134 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-core all 3.13.0c0e0m0s1-2 [164 kB] Get: 135 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 136 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 137 http://deb.debian.org/debian unstable/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 138 http://deb.debian.org/debian unstable/main amd64 ruby-sorted-set all 1.0.3-3 [4736 B] Fetched 44.4 MB in 22s (2007 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.12-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19965 files and directories currently installed.) Preparing to unpack .../libpython3.12-minimal_3.12.7-3_amd64.deb ... Unpacking libpython3.12-minimal:amd64 (3.12.7-3) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../python3.12-minimal_3.12.7-3_amd64.deb ... Unpacking python3.12-minimal (3.12.7-3) ... Setting up libpython3.12-minimal:amd64 (3.12.7-3) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.12-minimal (3.12.7-3) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20285 files and directories currently installed.) Preparing to unpack .../00-python3-minimal_3.12.7-1_amd64.deb ... Unpacking python3-minimal (3.12.7-1) ... Selecting previously unselected package media-types. Preparing to unpack .../01-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../02-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../03-tzdata_2024b-3_all.deb ... Unpacking tzdata (2024b-3) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../04-libkrb5support0_1.21.3-3_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-3) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../05-libcom-err2_1.47.1-1+b1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.1-1+b1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../06-libk5crypto3_1.21.3-3_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-3) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../07-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../08-libkrb5-3_1.21.3-3_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-3) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../09-libgssapi-krb5-2_1.21.3-3_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-3) ... Selecting previously unselected package libtirpc-common. Preparing to unpack .../10-libtirpc-common_1.3.4+ds-1.3_all.deb ... Unpacking libtirpc-common (1.3.4+ds-1.3) ... Selecting previously unselected package libtirpc3t64:amd64. Preparing to unpack .../11-libtirpc3t64_1.3.4+ds-1.3+b1_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3 to /lib/x86_64-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3.0.0 to /lib/x86_64-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' Unpacking libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Selecting previously unselected package libnsl2:amd64. Preparing to unpack .../12-libnsl2_1.3.0-3+b3_amd64.deb ... Unpacking libnsl2:amd64 (1.3.0-3+b3) ... Selecting previously unselected package readline-common. Preparing to unpack .../13-readline-common_8.2-5_all.deb ... Unpacking readline-common (8.2-5) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../14-libreadline8t64_8.2-5_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-5) ... Selecting previously unselected package libpython3.12-stdlib:amd64. Preparing to unpack .../15-libpython3.12-stdlib_3.12.7-3_amd64.deb ... Unpacking libpython3.12-stdlib:amd64 (3.12.7-3) ... Selecting previously unselected package python3.12. Preparing to unpack .../16-python3.12_3.12.7-3_amd64.deb ... Unpacking python3.12 (3.12.7-3) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../17-libpython3-stdlib_3.12.7-1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.12.7-1) ... Setting up python3-minimal (3.12.7-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21347 files and directories currently installed.) Preparing to unpack .../000-python3_3.12.7-1_amd64.deb ... Unpacking python3 (3.12.7-1) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../001-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../002-openssl_3.3.2-2_amd64.deb ... Unpacking openssl (3.3.2-2) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../003-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../004-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../005-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../006-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../007-gettext-base_0.22.5-2_amd64.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../008-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../009-groff-base_1.23.0-5_amd64.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../010-bsdextrautils_2.40.2-11_amd64.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../011-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../012-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../013-m4_1.4.19-4_amd64.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../014-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../015-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../016-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../017-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../018-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../019-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../020-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../021-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../022-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../023-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../024-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../025-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../026-libicu72_72.1-5+b1_amd64.deb ... Unpacking libicu72:amd64 (72.1-5+b1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../027-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../028-gettext_0.22.5-2_amd64.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../029-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../030-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../031-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package libassuan9:amd64. Preparing to unpack .../032-libassuan9_3.0.1-2_amd64.deb ... Unpacking libassuan9:amd64 (3.0.1-2) ... Selecting previously unselected package gpgconf. Preparing to unpack .../033-gpgconf_2.2.45-2_amd64.deb ... Unpacking gpgconf (2.2.45-2) ... Selecting previously unselected package libksba8:amd64. Preparing to unpack .../034-libksba8_1.6.7-2+b1_amd64.deb ... Unpacking libksba8:amd64 (1.6.7-2+b1) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../035-libsasl2-modules-db_2.1.28+dfsg1-8_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-8) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../036-libsasl2-2_2.1.28+dfsg1-8_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-8) ... Selecting previously unselected package libldap-2.5-0:amd64. Preparing to unpack .../037-libldap-2.5-0_2.5.18+dfsg-3+b1_amd64.deb ... Unpacking libldap-2.5-0:amd64 (2.5.18+dfsg-3+b1) ... Selecting previously unselected package libnpth0t64:amd64. Preparing to unpack .../038-libnpth0t64_1.6-3.1+b1_amd64.deb ... Unpacking libnpth0t64:amd64 (1.6-3.1+b1) ... Selecting previously unselected package dirmngr. Preparing to unpack .../039-dirmngr_2.2.45-2_amd64.deb ... Unpacking dirmngr (2.2.45-2) ... Selecting previously unselected package gnupg-l10n. Preparing to unpack .../040-gnupg-l10n_2.2.45-2_all.deb ... Unpacking gnupg-l10n (2.2.45-2) ... Selecting previously unselected package gpg. Preparing to unpack .../041-gpg_2.2.45-2_amd64.deb ... Unpacking gpg (2.2.45-2) ... Selecting previously unselected package pinentry-curses. Preparing to unpack .../042-pinentry-curses_1.2.1-4+b1_amd64.deb ... Unpacking pinentry-curses (1.2.1-4+b1) ... Selecting previously unselected package gpg-agent. Preparing to unpack .../043-gpg-agent_2.2.45-2_amd64.deb ... Unpacking gpg-agent (2.2.45-2) ... Selecting previously unselected package gpgsm. Preparing to unpack .../044-gpgsm_2.2.45-2_amd64.deb ... Unpacking gpgsm (2.2.45-2) ... Selecting previously unselected package gnupg. Preparing to unpack .../045-gnupg_2.2.45-2_all.deb ... Unpacking gnupg (2.2.45-2) ... Selecting previously unselected package libfile-dirlist-perl. Preparing to unpack .../046-libfile-dirlist-perl_0.05-3_all.deb ... Unpacking libfile-dirlist-perl (0.05-3) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../047-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../048-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libfile-touch-perl. Preparing to unpack .../049-libfile-touch-perl_0.12-2_all.deb ... Unpacking libfile-touch-perl (0.12-2) ... Selecting previously unselected package libio-pty-perl. Preparing to unpack .../050-libio-pty-perl_1%3a1.20-1+b2_amd64.deb ... Unpacking libio-pty-perl (1:1.20-1+b2) ... Selecting previously unselected package libipc-run-perl. Preparing to unpack .../051-libipc-run-perl_20231003.0-2_all.deb ... Unpacking libipc-run-perl (20231003.0-2) ... Selecting previously unselected package libclass-method-modifiers-perl. Preparing to unpack .../052-libclass-method-modifiers-perl_2.15-1_all.deb ... Unpacking libclass-method-modifiers-perl (2.15-1) ... Selecting previously unselected package libclass-xsaccessor-perl. Preparing to unpack .../053-libclass-xsaccessor-perl_1.19-4+b4_amd64.deb ... Unpacking libclass-xsaccessor-perl (1.19-4+b4) ... Selecting previously unselected package libb-hooks-op-check-perl:amd64. Preparing to unpack .../054-libb-hooks-op-check-perl_0.22-3+b2_amd64.deb ... Unpacking libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Selecting previously unselected package libdynaloader-functions-perl. Preparing to unpack .../055-libdynaloader-functions-perl_0.004-1_all.deb ... Unpacking libdynaloader-functions-perl (0.004-1) ... Selecting previously unselected package libdevel-callchecker-perl:amd64. Preparing to unpack .../056-libdevel-callchecker-perl_0.009-1+b1_amd64.deb ... Unpacking libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Selecting previously unselected package libparams-classify-perl:amd64. Preparing to unpack .../057-libparams-classify-perl_0.015-2+b4_amd64.deb ... Unpacking libparams-classify-perl:amd64 (0.015-2+b4) ... Selecting previously unselected package libmodule-runtime-perl. Preparing to unpack .../058-libmodule-runtime-perl_0.016-2_all.deb ... Unpacking libmodule-runtime-perl (0.016-2) ... Selecting previously unselected package libimport-into-perl. Preparing to unpack .../059-libimport-into-perl_1.002005-2_all.deb ... Unpacking libimport-into-perl (1.002005-2) ... Selecting previously unselected package librole-tiny-perl. Preparing to unpack .../060-librole-tiny-perl_2.002004-1_all.deb ... Unpacking librole-tiny-perl (2.002004-1) ... Selecting previously unselected package libsub-quote-perl. Preparing to unpack .../061-libsub-quote-perl_2.006008-1_all.deb ... Unpacking libsub-quote-perl (2.006008-1) ... Selecting previously unselected package libmoo-perl. Preparing to unpack .../062-libmoo-perl_2.005005-1_all.deb ... Unpacking libmoo-perl (2.005005-1) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../063-libencode-locale-perl_1.05-3_all.deb ... Unpacking libencode-locale-perl (1.05-3) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../064-libtimedate-perl_2.3300-2_all.deb ... Unpacking libtimedate-perl (2.3300-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../065-libhttp-date-perl_6.06-1_all.deb ... Unpacking libhttp-date-perl (6.06-1) ... Selecting previously unselected package libfile-listing-perl. Preparing to unpack .../066-libfile-listing-perl_6.16-1_all.deb ... Unpacking libfile-listing-perl (6.16-1) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../067-libhtml-tagset-perl_3.24-1_all.deb ... Unpacking libhtml-tagset-perl (3.24-1) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../068-liburi-perl_5.30-1_all.deb ... Unpacking liburi-perl (5.30-1) ... Selecting previously unselected package libhtml-parser-perl:amd64. Preparing to unpack .../069-libhtml-parser-perl_3.83-1+b1_amd64.deb ... Unpacking libhtml-parser-perl:amd64 (3.83-1+b1) ... Selecting previously unselected package libhtml-tree-perl. Preparing to unpack .../070-libhtml-tree-perl_5.07-3_all.deb ... Unpacking libhtml-tree-perl (5.07-3) ... Selecting previously unselected package libclone-perl:amd64. Preparing to unpack .../071-libclone-perl_0.47-1+b1_amd64.deb ... Unpacking libclone-perl:amd64 (0.47-1+b1) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../072-libio-html-perl_1.004-3_all.deb ... Unpacking libio-html-perl (1.004-3) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../073-liblwp-mediatypes-perl_6.04-2_all.deb ... Unpacking liblwp-mediatypes-perl (6.04-2) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../074-libhttp-message-perl_7.00-2_all.deb ... Unpacking libhttp-message-perl (7.00-2) ... Selecting previously unselected package libhttp-cookies-perl. Preparing to unpack .../075-libhttp-cookies-perl_6.11-1_all.deb ... Unpacking libhttp-cookies-perl (6.11-1) ... Selecting previously unselected package libhttp-negotiate-perl. Preparing to unpack .../076-libhttp-negotiate-perl_6.01-2_all.deb ... Unpacking libhttp-negotiate-perl (6.01-2) ... Selecting previously unselected package perl-openssl-defaults:amd64. Preparing to unpack .../077-perl-openssl-defaults_7+b2_amd64.deb ... Unpacking perl-openssl-defaults:amd64 (7+b2) ... Selecting previously unselected package libnet-ssleay-perl:amd64. Preparing to unpack .../078-libnet-ssleay-perl_1.94-2_amd64.deb ... Unpacking libnet-ssleay-perl:amd64 (1.94-2) ... Selecting previously unselected package libio-socket-ssl-perl. Preparing to unpack .../079-libio-socket-ssl-perl_2.089-1_all.deb ... Unpacking libio-socket-ssl-perl (2.089-1) ... Selecting previously unselected package libnet-http-perl. Preparing to unpack .../080-libnet-http-perl_6.23-1_all.deb ... Unpacking libnet-http-perl (6.23-1) ... Selecting previously unselected package liblwp-protocol-https-perl. Preparing to unpack .../081-liblwp-protocol-https-perl_6.14-1_all.deb ... Unpacking liblwp-protocol-https-perl (6.14-1) ... Selecting previously unselected package libtry-tiny-perl. Preparing to unpack .../082-libtry-tiny-perl_0.32-1_all.deb ... Unpacking libtry-tiny-perl (0.32-1) ... Selecting previously unselected package libwww-robotrules-perl. Preparing to unpack .../083-libwww-robotrules-perl_6.02-1_all.deb ... Unpacking libwww-robotrules-perl (6.02-1) ... Selecting previously unselected package libwww-perl. Preparing to unpack .../084-libwww-perl_6.77-1_all.deb ... Unpacking libwww-perl (6.77-1) ... Selecting previously unselected package patchutils. Preparing to unpack .../085-patchutils_0.4.2-1_amd64.deb ... Unpacking patchutils (0.4.2-1) ... Selecting previously unselected package wdiff. Preparing to unpack .../086-wdiff_1.2.2-6_amd64.deb ... Unpacking wdiff (1.2.2-6) ... Selecting previously unselected package devscripts. Preparing to unpack .../087-devscripts_2.24.4_all.deb ... Unpacking devscripts (2.24.4) ... Selecting previously unselected package rubygems-integration. Preparing to unpack .../088-rubygems-integration_1.18_all.deb ... Unpacking rubygems-integration (1.18) ... Selecting previously unselected package ruby-net-telnet. Preparing to unpack .../089-ruby-net-telnet_0.2.0-1_all.deb ... Unpacking ruby-net-telnet (0.2.0-1) ... Selecting previously unselected package ruby-webrick. Preparing to unpack .../090-ruby-webrick_1.8.1-1_all.deb ... Unpacking ruby-webrick (1.8.1-1) ... Selecting previously unselected package ruby-xmlrpc. Preparing to unpack .../091-ruby-xmlrpc_0.3.3-2_all.deb ... Unpacking ruby-xmlrpc (0.3.3-2) ... Selecting previously unselected package libruby:amd64. Preparing to unpack .../092-libruby_1%3a3.1+nmu1_amd64.deb ... Unpacking libruby:amd64 (1:3.1+nmu1) ... Selecting previously unselected package ruby-sdbm:amd64. Preparing to unpack .../093-ruby-sdbm_1.0.0-5+b5_amd64.deb ... Unpacking ruby-sdbm:amd64 (1.0.0-5+b5) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../094-libedit2_3.1-20240808-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20240808-1) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../095-libncurses6_6.5-2+b1_amd64.deb ... Unpacking libncurses6:amd64 (6.5-2+b1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../096-libyaml-0-2_0.2.5-1+b2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-1+b2) ... Selecting previously unselected package libruby3.1t64:amd64. Preparing to unpack .../097-libruby3.1t64_3.1.2-8.4_amd64.deb ... Unpacking libruby3.1t64:amd64 (3.1.2-8.4) ... Selecting previously unselected package ruby3.1. Preparing to unpack .../098-ruby3.1_3.1.2-8.4_amd64.deb ... Unpacking ruby3.1 (3.1.2-8.4) ... Selecting previously unselected package ruby-rubygems. Preparing to unpack .../099-ruby-rubygems_3.4.20-1_all.deb ... Unpacking ruby-rubygems (3.4.20-1) ... Selecting previously unselected package ruby. Preparing to unpack .../100-ruby_1%3a3.1+nmu1_amd64.deb ... Unpacking ruby (1:3.1+nmu1) ... Selecting previously unselected package rake. Preparing to unpack .../101-rake_13.2.1-1_all.deb ... Unpacking rake (13.2.1-1) ... Selecting previously unselected package gem2deb-test-runner. Preparing to unpack .../102-gem2deb-test-runner_2.2.5_amd64.deb ... Unpacking gem2deb-test-runner (2.2.5) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../103-libgmpxx4ldbl_2%3a6.3.0+dfsg-2+b2_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-2+b2) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../104-libgmp-dev_2%3a6.3.0+dfsg-2+b2_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-2+b2) ... Selecting previously unselected package ruby3.1-dev:amd64. Preparing to unpack .../105-ruby3.1-dev_3.1.2-8.4_amd64.deb ... Unpacking ruby3.1-dev:amd64 (3.1.2-8.4) ... Selecting previously unselected package ruby-all-dev:amd64. Preparing to unpack .../106-ruby-all-dev_1%3a3.1+nmu1_amd64.deb ... Unpacking ruby-all-dev:amd64 (1:3.1+nmu1) ... Selecting previously unselected package gem2deb. Preparing to unpack .../107-gem2deb_2.2.5_amd64.deb ... Unpacking gem2deb (2.2.5) ... Selecting previously unselected package ruby-concurrent. Preparing to unpack .../108-ruby-concurrent_1.2.3-4_all.deb ... Unpacking ruby-concurrent (1.2.3-4) ... Selecting previously unselected package ruby-diff-lcs. Preparing to unpack .../109-ruby-diff-lcs_1.5.1-1_all.deb ... Unpacking ruby-diff-lcs (1.5.1-1) ... Selecting previously unselected package ruby-rbtree. Preparing to unpack .../110-ruby-rbtree_0.4.6-1+b1_amd64.deb ... Unpacking ruby-rbtree (0.4.6-1+b1) ... Selecting previously unselected package ruby-rspec-support. Preparing to unpack .../111-ruby-rspec-support_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-support (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-core. Preparing to unpack .../112-ruby-rspec-core_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-core (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-expectations. Preparing to unpack .../113-ruby-rspec-expectations_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-mocks. Preparing to unpack .../114-ruby-rspec-mocks_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec. Preparing to unpack .../115-ruby-rspec_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-sorted-set. Preparing to unpack .../116-ruby-sorted-set_1.0.3-3_all.deb ... Unpacking ruby-sorted-set (1.0.3-3) ... Setting up libksba8:amd64 (1.6.7-2+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up wdiff (1.2.2-6) ... Setting up libfile-which-perl (1.27-2) ... Setting up libnpth0t64:amd64 (1.6-3.1+b1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libicu72:amd64 (72.1-5+b1) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libdynaloader-functions-perl (0.004-1) ... Setting up libclass-method-modifiers-perl (2.15-1) ... Setting up libio-pty-perl (1:1.20-1+b2) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libclone-perl:amd64 (0.47-1+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-1+b2) ... Setting up libtirpc-common (1.3.4+ds-1.3) ... Setting up libhtml-tagset-perl (3.24-1) ... Setting up libdebhelper-perl (13.20) ... Setting up libedit2:amd64 (3.1-20240808-1) ... Setting up liblwp-mediatypes-perl (6.04-2) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libtry-tiny-perl (0.32-1) ... Setting up perl-openssl-defaults:amd64 (7+b2) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libencode-locale-perl (1.05-3) ... Setting up libcom-err2:amd64 (1.47.1-1+b1) ... Setting up file (1:5.45-3+b1) ... Setting up ruby-concurrent (1.2.3-4) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libkrb5support0:amd64 (1.21.3-3) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-8) ... Setting up tzdata (2024b-3) ... Current default time zone: 'Etc/UTC' Local time is now: Mon Dec 29 08:37:05 UTC 2025. Universal Time is now: Mon Dec 29 08:37:05 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-2+b2) ... Setting up gnupg-l10n (2.2.45-2) ... Setting up libncurses6:amd64 (6.5-2+b1) ... Setting up ruby-net-telnet (0.2.0-1) ... Setting up libio-html-perl (1.004-3) ... Setting up autopoint (0.22.5-2) ... Setting up libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Setting up libipc-run-perl (20231003.0-2) ... Setting up libk5crypto3:amd64 (1.21.3-3) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-8) ... Setting up autoconf (2.72-3) ... Setting up ruby-rspec-support (3.13.0c0e0m0s1-2) ... Setting up libtimedate-perl (2.3300-2) ... Setting up ruby-webrick (1.8.1-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libassuan9:amd64 (3.0.1-2) ... Setting up librole-tiny-perl (2.002004-1) ... Setting up netbase (6.4) ... Setting up libsub-quote-perl (2.006008-1) ... Setting up libclass-xsaccessor-perl (1.19-4+b4) ... Setting up libkrb5-3:amd64 (1.21.3-3) ... Setting up libfile-dirlist-perl (0.05-3) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up openssl (3.3.2-2) ... Setting up readline-common (8.2-5) ... Setting up ruby-xmlrpc (0.3.3-2) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up liburi-perl (5.30-1) ... Setting up libfile-touch-perl (0.12-2) ... Setting up libnet-ssleay-perl:amd64 (1.94-2) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up pinentry-curses (1.2.1-4+b1) ... Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up libhttp-date-perl (6.06-1) ... Setting up gettext (0.22.5-2) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-2+b2) ... Setting up libfile-listing-perl (6.16-1) ... Setting up libtool (2.4.7-8) ... Setting up libnet-http-perl (6.23-1) ... Setting up libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Setting up libldap-2.5-0:amd64 (2.5.18+dfsg-3+b1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up patchutils (0.4.2-1) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up libgssapi-krb5-2:amd64 (1.21.3-3) ... Setting up libreadline8t64:amd64 (8.2-5) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up libwww-robotrules-perl (6.02-1) ... Setting up groff-base (1.23.0-5) ... Setting up libhtml-parser-perl:amd64 (3.83-1+b1) ... Setting up gpgconf (2.2.45-2) ... Setting up libio-socket-ssl-perl (2.089-1) ... Setting up gpg (2.2.45-2) ... Setting up libhttp-message-perl (7.00-2) ... Setting up libhttp-negotiate-perl (6.01-2) ... Setting up gpg-agent (2.2.45-2) ... Setting up libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Setting up libhttp-cookies-perl (6.11-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libhtml-tree-perl (5.07-3) ... Setting up libparams-classify-perl:amd64 (0.015-2+b4) ... Setting up gpgsm (2.2.45-2) ... Setting up rubygems-integration (1.18) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up dirmngr (2.2.45-2) ... Setting up libmodule-runtime-perl (0.016-2) ... Setting up libnsl2:amd64 (1.3.0-3+b3) ... Setting up gnupg (2.2.45-2) ... Setting up libpython3.12-stdlib:amd64 (3.12.7-3) ... Setting up libimport-into-perl (1.002005-2) ... Setting up libmoo-perl (2.005005-1) ... Setting up python3.12 (3.12.7-3) ... Setting up debhelper (13.20) ... Setting up libpython3-stdlib:amd64 (3.12.7-1) ... Setting up python3 (3.12.7-1) ... Setting up liblwp-protocol-https-perl (6.14-1) ... Setting up libruby:amd64 (1:3.1+nmu1) ... Setting up libwww-perl (6.77-1) ... Setting up ruby-rubygems (3.4.20-1) ... Setting up devscripts (2.24.4) ... Setting up ruby-sdbm:amd64 (1.0.0-5+b5) ... Setting up libruby3.1t64:amd64 (3.1.2-8.4) ... Setting up ruby3.1 (3.1.2-8.4) ... Setting up ruby3.1-dev:amd64 (3.1.2-8.4) ... Setting up ruby-all-dev:amd64 (1:3.1+nmu1) ... Setting up ruby (1:3.1+nmu1) ... Setting up ruby-rbtree (0.4.6-1+b1) ... Setting up rake (13.2.1-1) ... Setting up ruby-rspec-core (3.13.0c0e0m0s1-2) ... Setting up ruby-diff-lcs (1.5.1-1) ... Setting up ruby-sorted-set (1.0.3-3) ... Setting up gem2deb-test-runner (2.2.5) ... Setting up ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... Setting up ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... Setting up gem2deb (2.2.5) ... Setting up ruby-rspec (3.13.0c0e0m0s1-2) ... Processing triggers for libc-bin (2.40-4) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/ruby-immutable-ruby-0.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-immutable-ruby_0.1.0-2_source.changes dpkg-buildpackage: info: source package ruby-immutable-ruby dpkg-buildpackage: info: source version 0.1.0-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Jeremy Bícha dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean --buildsystem=ruby --with ruby dh_auto_clean -O--buildsystem=ruby dh_ruby --clean dh_autoreconf_clean -O--buildsystem=ruby dh_clean -O--buildsystem=ruby debian/rules binary dh binary --buildsystem=ruby --with ruby dh_update_autotools_config -O--buildsystem=ruby dh_autoreconf -O--buildsystem=ruby dh_auto_configure -O--buildsystem=ruby dh_ruby --configure dh_auto_build -O--buildsystem=ruby dh_ruby --build dh_auto_test -O--buildsystem=ruby dh_ruby --test create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=ruby dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-immutable-ruby/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby ┌──────────────────────────────────────────────────────────────────────────────┐ │ ruby-immutable-ruby: Installing files and building extensions for ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ /usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20251228-1079708-p8tiao/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: description and summary are identical WARNING: open-ended dependency on bundler (>= 2.2.10, development) is not recommended if bundler is semantically versioned, use: add_development_dependency 'bundler', '~> 2.2', '>= 2.2.10' WARNING: See https://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: immutable-ruby Version: 0.1.0 File: immutable-ruby-0.1.0.gem /usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-immutable-ruby/usr/share/rubygems-integration/all /tmp/d20251228-1079708-p8tiao/immutable-ruby-0.1.0.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext/enumerable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext/io.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/deque.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/enumerable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/hash.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/list.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/nested.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/set.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/sorted_set.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/trie.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/undefined.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/vector.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/version.rb Successfully installed immutable-ruby-0.1.0 1 gem installed cd debian/ruby-immutable-ruby/usr/share/rubygems-integration/all rm -rf bin rm -rf build_info rm -rf cache rm -rf doc rm -rf extensions rmdir plugins cd gems/immutable-ruby-0.1.0 rm -f chmod 644 lib/immutable/core_ext/enumerable.rb lib/immutable/core_ext/io.rb lib/immutable/core_ext.rb lib/immutable/deque.rb lib/immutable/enumerable.rb lib/immutable/hash.rb lib/immutable/list.rb lib/immutable/nested.rb lib/immutable/set.rb lib/immutable/sorted_set.rb lib/immutable/trie.rb lib/immutable/undefined.rb lib/immutable/vector.rb lib/immutable/version.rb lib/immutable.rb find lib/ -type d -empty -delete cd - cd - /usr/bin/ruby3.1 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -e gem\ \"immutable-ruby\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby3.1 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation Array #to_list returns an equivalent Immutable list Enumerable #to_list returns an equivalent list works on Ranges IO #to_list with a File returns an equivalent list with a StringIO returns an equivalent list Immutable::Deque #clear on [] preserves the original returns an empty deque on ["A"] preserves the original returns an empty deque on ["A", "B", "C"] preserves the original returns an empty deque from a subclass returns an instance of the subclass Immutable::Deque .[] with no arguments always returns the same instance returns an empty, frozen deque with a number of items always returns a different instance is the same as repeatedly using #endeque Immutable::Deque on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::Deque #dequeue on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on empty subclass returns empty object of same class #shift on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on empty subclass returns empty object of same class Immutable::Deque #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false after dedequeing an item from ["A", "B", "C"] returns false .empty returns the canonical empty deque from a subclass returns an empty instance of the subclass Immutable::Deque #enqueue on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["A", "B"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["A", "B", "C", "D"] #push on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["A", "B"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["A", "B", "C", "D"] Immutable::Deque #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" Immutable::Deque #inspect on [] returns "Immutable::Deque[]" returns a string which can be eval'd to get an equivalent object on ["A"] returns "Immutable::Deque[\"A\"]" returns a string which can be eval'd to get an equivalent object on ["A", "B", "C"] returns "Immutable::Deque[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent object Immutable::Deque #last on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "C" Immutable::Deque #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to push and pop items after loading Immutable::Deque .new accepts a single enumerable argument and creates a new deque is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new deque Immutable::Deque #pop on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns [] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["A", "B"] returns a frozen instance on empty subclass returns an empty object of the same class Immutable::Deque #pretty_print prints the whole Deque on one line if it fits prints each item on its own line, if not Immutable::Deque #push pushing "A" into [] preserves the original returns ["A"] returns a frozen instance pushing "B" into ["A"] preserves the original returns ["A", "B"] returns a frozen instance pushing "D" into ["A", "B", "C"] preserves the original returns ["A", "B", "C", "D"] returns a frozen instance on a subclass returns an object of same class Immutable::Deque modification (using #push, #pop, #shift, and #unshift) works when applied in many random combinations Immutable::Deque #rotate on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns ["A"] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["B", "C", "A"] returns a frozen instance on ["A", "B", "C", "D"] preserves the original returns ["A", "B", "C", "D"] returns a frozen instance on ["A", "B", "C", "D"] preserves the original returns ["C", "D", "A", "B"] returns a frozen instance on a Deque with most items on 'front' list works with a small rotation works with a larger rotation on a Deque with most items on 'rear' list works with a small rotation works with a larger rotation on empty subclass returns an empty object of the same class Immutable::Deque #shift on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns [] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["B", "C"] returns a frozen instance Immutable::Deque #size on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 #length on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 Immutable::Deque #to_a on [] returns [] returns a mutable array on ["A"] returns ["A"] returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] returns a mutable array #entries on [] returns [] returns a mutable array on ["A"] returns ["A"] returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] returns a mutable array Immutable::Deque #to_ary enables implicit conversion to block parameters method arguments works with splat Immutable::Deque #to_list on [] returns a list containing [] on ["A"] returns a list containing ["A"] on ["A", "B", "C"] returns a list containing ["A", "B", "C"] after dedequeing an item from ["A", "B", "C"] returns a list containing ["B", "C"] Immutable::Deque #unshift on [] with "A" preserves the original returns ["A"] returns a frozen instance on ["A"] with "B" preserves the original returns ["B", "A"] returns a frozen instance on ["A"] with "A" preserves the original returns ["A", "A"] returns a frozen instance on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] returns a frozen instance Immutable::Hash #all? when empty without a block returns true with a block returns true when not empty without a block returns true with a block returns true if the block always returns true returns false if the block ever returns false propagates an exception from the block stops iterating as soon as the block returns false Immutable::Hash #any? when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true (["A", "aye"]) returns false if the block always returns false returns true if the block ever returns true (["B", "bee"]) returns false if the block always returns false returns true if the block ever returns true (["C", "see"]) returns false if the block always returns false returns true if the block ever returns true ([nil, "NIL"]) returns false if the block always returns false propagates exceptions raised in the block stops iterating as soon as the block returns true with no block returns true Immutable::Hash #assoc searches for a key/val pair with a given key returns nil if a matching key is not found returns nil even if there is a default uses #== to compare keys with provided object #rassoc searches for a key/val pair with a given value returns nil if a matching value is not found returns nil even if there is a default uses #== to compare values with provided object Immutable::Hash #clear maintains the default Proc, if there is one on [] preserves the original returns an empty hash on [{"A"=>"aye"}] preserves the original returns an empty hash on [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] preserves the original returns an empty hash on a subclass returns an empty instance of the subclass Immutable::Hash .hash with nothing returns the canonical empty hash with an implicit hash is equivalent to repeatedly using #put with an array of pairs initializes a new Hash with an Immutable::Hash initializes an equivalent Hash Immutable::Hash #dup returns self #clone returns self Immutable::Hash #default_proc returns the default block given when the Hash was created returns nil if no default block was given after a key/val pair are inserted doesn't change after all key/val pairs are filtered out doesn't change after Hash is inverted doesn't change when a slice is taken doesn't change when keys are removed with #except doesn't change when Hash is mapped doesn't change when another Hash is merged in doesn't change Immutable::Hash #delete with an existing key preserves the original returns a copy with the remaining key/value pairs with a non-existing key preserves the original values returns self when removing the last key from a Hash with no default block returns the canonical empty Hash Immutable::Hash #dig returns the value with one argument to dig returns the value in nested hashes returns nil if the key is not present returns nil if you dig out the end of the hash raises a NoMethodError if a value does not support #dig returns the correct value when there is a default proc Immutable::Hash #each with a block (internal iteration) returns self yields all key/value pairs yields key/value pairs in the same order as #each_key and #each_value yields both of a pair of colliding keys yields only the key to a block expecting |key,| with no block returns an Enumerator #each_pair with a block (internal iteration) returns self yields all key/value pairs yields key/value pairs in the same order as #each_key and #each_value yields both of a pair of colliding keys yields only the key to a block expecting |key,| with no block returns an Enumerator #each_key yields all keys with no block returns an Enumerator #each_value yields all values with no block returns an Enumerator Immutable::Hash #each_with_index with a block (internal iteration) returns self yields all key/value pairs with numeric indexes with no block returns an Enumerator Immutable::Hash #empty? returns true for [] returns false for [{"A"=>"aye"}] returns false for [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] returns true for empty hashes which have a default block .empty returns the canonical empty Hash from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Hash Immutable::Hash returns true on a large hash which is modified and then modified back again #eql? returns false when comparing with a standard hash returns false when comparing with an arbitrary object returns false when comparing with a subclass of Immutable::Hash #== returns true when comparing with a standard hash returns false when comparing with an arbitrary object returns true when comparing with a subclass of Immutable::Hash performs numeric conversions between floats and BigDecimals #eql? returns true for {} and {} for {} and {} returns false for {"A"=>"aye"} and {} for {} and {"A"=>"aye"} returns false for {} and {"A"=>"aye"} for {"A"=>"aye"} and {} returns true for {"A"=>"aye"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye"} returns false for {"A"=>"aye"} and {"B"=>"bee"} for {"B"=>"bee"} and {"A"=>"aye"} returns false for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} returns false for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} returns true for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} returns true for {"C"=>"see", "A"=>"aye", "B"=>"bee"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"C"=>"see", "A"=>"aye", "B"=>"bee"} #== returns true for {} and {} for {} and {} returns false for {"A"=>"aye"} and {} for {} and {"A"=>"aye"} returns false for {} and {"A"=>"aye"} for {"A"=>"aye"} and {} returns true for {"A"=>"aye"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye"} returns false for {"A"=>"aye"} and {"B"=>"bee"} for {"B"=>"bee"} and {"A"=>"aye"} returns false for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} returns false for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} returns true for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} returns true for {"C"=>"see", "A"=>"aye", "B"=>"bee"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"C"=>"see", "A"=>"aye", "B"=>"bee"} Immutable::Hash #except works on a large Hash, with many combinations of input with only keys that the Hash has returns a Hash without those values doesn't change the original Hash with keys that the Hash doesn't have returns a Hash without the values that it had keys for doesn't change the original Hash Immutable::Hash #fetch gives precedence to default block over default argument if passed both raises an ArgumentError when not passed one or 2 arguments with no default provided when the key exists returns the value associated with the key when the key does not exist raises a KeyError with a default value when the key exists returns the value associated with the key when the key does not exist returns the default value with a default block when the key exists returns the value associated with the key when the key does not exist invokes the default block with the missing key as paramter Immutable::Hash #fetch_values when the all the requested keys exist returns a vector of values for the given keys when the key does not exist raises a KeyError Immutable::Hash #find stops iterating when the block returns true on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["B", "bee"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns [nil, "NIL"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns nil without a block returns an Enumerator #detect stops iterating when the block returns true on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["B", "bee"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns [nil, "NIL"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns nil without a block returns an Enumerator Immutable::Hash #flat_map yields each key/val pair returns the concatenation of block return values doesn't change the receiver returns an empty array if only empty arrays are returned by block with no block returns an Enumerator Immutable::Hash #flatten with flatten depth of zero returns a vector of keys/value without array keys or values returns a vector of keys and values doesn't modify the receiver on an empty Hash returns an empty Vector with array keys flattens array keys into returned vector if flatten depth is sufficient doesn't modify the receiver (or its contents) with array values flattens array values into returned vector if flatten depth is sufficient doesn't modify the receiver (or its contents) with vector keys flattens vector keys into returned vector if flatten depth is sufficient with vector values flattens vector values into returned vector if flatten depth is sufficient Immutable::Hash #get uses #hash to look up keys uses #eql? to compare keys with the same hash code does not use #eql? to compare keys with different hash codes with a default block when the key exists returns the value associated with the key does not call the default block even if the key is 'nil' when the key does not exist returns the value from the default block with no default block returns the value ("aye") for an existing key ("A") returns the value ("bee") for an existing key ("B") returns the value ("see") for an existing key ("C") returns the value ("NIL") for an existing key (nil) returns nil for a non-existing key #[] uses #hash to look up keys uses #eql? to compare keys with the same hash code does not use #eql? to compare keys with different hash codes with a default block when the key exists returns the value associated with the key does not call the default block even if the key is 'nil' when the key does not exist returns the value from the default block with no default block returns the value ("aye") for an existing key ("A") returns the value ("bee") for an existing key ("B") returns the value ("see") for an existing key ("C") returns the value ("NIL") for an existing key (nil) returns nil for a non-existing key Immutable::Hash #key? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #has_key? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #include? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #member? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false Immutable::Hash #value? returns true if any key/val pair in Hash has the same value returns false if no key/val pair in Hash has the same value uses #== to check equality works on a large hash #has_value? returns true if any key/val pair in Hash has the same value returns false if no key/val pair in Hash has the same value uses #== to check equality works on a large hash Immutable::Hash #hash values are sufficiently distributed differs given the same keys and different values differs given the same values and different keys generates the same hash value for a hash regardless of the order things were added to it on an empty hash returns 0 Immutable::Hash #inspect on [] returns "Immutable::Hash[]" on [{"A"=>"aye"}] returns "Immutable::Hash[\"A\" => \"aye\"]" on [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] returns "Immutable::Hash[\"A\" => \"aye\", \"B\" => \"bee\", \"C\" => \"see\"]" on {} returns a string which can be eval'd to get an equivalent object on {"A"=>"aye"} returns a string which can be eval'd to get an equivalent object on {:a=>"aye", :b=>"bee", :c=>"see"} returns a string which can be eval'd to get an equivalent object Immutable::Hash #invert uses the existing keys as values and values as keys will select one key/value pair among multiple which have same value doesn't change the original Hash from a subclass of Hash returns an instance of the subclass Immutable::Hash #key returns a key associated with the given value, if there is one returns nil if there is no key associated with the given value uses #== to compare values for equality doesn't use default block if value is not found Immutable::Hash #keys returns the keys as a set returns frozen String keys Immutable::Hash #map when empty returns self when not empty with a block preserves the original values returns a new hash with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass #collect when empty returns self when not empty with a block preserves the original values returns a new hash with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass Immutable::Hash #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by key after loading Immutable::Hash #merge sets any duplicate key to the value of block if passed a block yields key/value pairs in the same order as #each for {} and {} returns {} when passed an Immutable::Hash returns {} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {} returns {"A"=>"aye"} when passed an Immutable::Hash returns {"A"=>"aye"} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {"A"=>"bee"} returns {"A"=>"bee"} when passed an Immutable::Hash returns {"A"=>"bee"} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {"B"=>"bee"} returns {"A"=>"aye", "B"=>"bee"} when passed an Immutable::Hash returns {"A"=>"aye", "B"=>"bee"} when passed a Ruby Hash doesn't change the original Hashes for [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300]] and [[150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] returns [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] when passed an Immutable::Hash returns [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] when passed a Ruby Hash doesn't change the original Hashes when merging with an empty Hash returns self when merging with subset Hash returns self when called on a subclass returns an instance of the subclass Immutable::Hash #min returns the smallest key/val pair #max returns the largest key/val pair #min_by returns the smallest key/val pair (after passing it through a key function) returns the first key/val pair yielded by #each in case of a tie returns nil if the hash is empty #max_by returns the largest key/val pair (after passing it through a key function) returns the first key/val pair yielded by #each in case of a tie returns nil if the hash is empty Immutable::Hash .new is amenable to overriding of #initialize accepts an array as initializer returns a Hash which doesn't change even if initializer is mutated from a subclass returns a frozen instance of the subclass .[] accepts a Ruby Hash as initializer accepts a Immutable::Hash as initializer accepts an array as initializer can be used with a subclass of Immutable::Hash Immutable::Hash #none? when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true (["A", "aye"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true (["B", "bee"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true (["C", "see"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true ([nil, "NIL"]) returns true if the block always returns false stops iterating as soon as the block returns true with no block returns false Immutable::Hash #partition returns a pair of Immutable::Hashes returns key/val pairs for which predicate is true in first Hash returns key/val pairs for which predicate is false in second Hash doesn't modify the original Hash from a subclass should return instances of the subclass Immutable::Hash #pretty_print prints the whole Hash on one line if it fits prints each key/val pair on its own line, if not prints keys and vals on separate lines, if space is very tight Immutable::Hash #[]= raises error pointing to #put #put with a block passes the value to the block replaces the value with the result of the block supports to_proc methods if there is no existing association passes nil to the block stores the result of the block as the new value with a unique key preserves the original returns a copy with the superset of key/value pairs with a duplicate key preserves the original returns a copy with the superset of key/value pairs with duplicate key and identical value returns the original hash unmodified with big hash (force nested tries) returns the original hash unmodified for all changes with unequal keys which hash to the same value stores and can retrieve both when a String is inserted as key and then mutated is not affected Immutable::Hash #reduce when empty returns the memo when not empty with a block returns the final memo with no block uses a passed string as the name of a method to use instead uses a passed symbol as the name of a method to use instead #inject when empty returns the memo when not empty with a block returns the final memo with no block uses a passed string as the name of a method to use instead uses a passed symbol as the name of a method to use instead Immutable::Hash #reject when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values yields entries in the same order as #each with no block returns an Enumerator on a large hash, with many combinations of input still works #delete_if when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values yields entries in the same order as #each with no block returns an Enumerator on a large hash, with many combinations of input still works Immutable::Hash #reverse_each with a block returns self yields all key/value pairs in the opposite order as #each with no block returns an Enumerator Immutable::Hash #sample returns a randomly chosen item Immutable::Hash #select works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator #find_all works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator #keep_if works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator Immutable::Hash #size returns 0 for [] returns 1 for [{"A"=>"aye"}] returns 3 for [{"A"=>"bee", "B"=>"bee", "C"=>"see"}] has the correct size after adding lots of things with colliding keys and such has the correct size after lots of addings and removings #length returns 0 for [] returns 1 for [{"A"=>"aye"}] returns 3 for [{"A"=>"bee", "B"=>"bee", "C"=>"see"}] has the correct size after adding lots of things with colliding keys and such has the correct size after lots of addings and removings Immutable::Hash #slice with all keys present in the Hash returns the sliced values doesn't modify the original Hash with keys aren't present in the Hash returns the sliced values of the matching keys doesn't modify the original Hash on a Hash with a default block maintains the default block Immutable::Hash #sort returns a Vector of sorted key/val pairs works on large hashes uses block as comparator to sort if passed a block #sort_by returns a Vector of key/val pairs, sorted using the block as a key function Immutable::Hash #store with a unique key preserves the original returns a copy with the superset of key/value pairs with a duplicate key preserves the original returns a copy with the superset of key/value pairs with duplicate key and identical value returns the original hash unmodified with big hash (force nested tries) returns the original hash unmodified for all changes with unequal keys which hash to the same value stores and can retrieve both when a String is inserted as key and then mutated is not affected Immutable::Hash #<= for {} and {} returns true for {"A"=>1} and {} returns false for {} and {"A"=>1} returns true for {"A"=>1} and {"A"=>1} returns true for {"A"=>1} and {"A"=>2} returns false for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns true for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns false for {"B"=>0} and {"A"=>1, "B"=>2, "C"=>3} returns false #< for {} and {} returns false for {"A"=>1} and {} returns false for {} and {"A"=>1} returns true for {"A"=>1} and {"A"=>1} returns false for {"A"=>1} and {"A"=>2} returns false for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns true for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns false for {"B"=>0} and {"A"=>1, "B"=>2, "C"=>3} returns false Immutable::Hash #>= for {} and {} returns true for {"A"=>1} and {} returns true for {} and {"A"=>1} returns false for {"A"=>1} and {"A"=>1} returns true for {"A"=>1} and {"A"=>2} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns true for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>0} returns false #> for {} and {} returns false for {"A"=>1} and {} returns true for {} and {"A"=>1} returns false for {"A"=>1} and {"A"=>1} returns false for {"A"=>1} and {"A"=>2} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns true for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>0} returns false Immutable::Hash #take returns the first N key/val pairs from hash #take_while passes elements to the block until the block returns nil/false returns an array of all elements before the one which returned nil/false passes all elements if the block never returns nil/false Immutable::Hash #to_a returns an Array of [key, value] pairs in same order as #each Immutable::Hash #to_hash converts an empty Immutable::Hash to an empty Ruby Hash converts a non-empty Immutable::Hash to a Hash with the same keys and values doesn't modify the receiver #to_h converts an empty Immutable::Hash to an empty Ruby Hash converts a non-empty Immutable::Hash to a Hash with the same keys and values doesn't modify the receiver Immutable::Hash #to_proc on Hash without default proc returns a Proc instance returns a Proc that returns the value of an existing key returns a Proc that returns nil for a missing key on Hash with a default proc returns a Proc instance returns a Proc that returns the value of an existing key returns a Proc that returns the result of the hash's default proc for a missing key Immutable::Hash #update_in with one level on existing key passes the value to the block replaces the value with the result of the block should preserve the original with multi-level on existing keys passes the value to the block replaces the value with the result of the block should preserve the original with multi-level creating sub-hashes when keys don't exist passes nil to the block creates subhashes on the way to set the value with multi-level including vector with existing keys passes the value to the block replaces the value with the result of the block should preserve the original with empty key_path raises ArguemntError Immutable::Hash #values_at on Hash without default proc returns an empty vector when no keys are given returns a vector of values for the given keys fills nil when keys are missing on Hash with default proc fills the result of the default proc when keys are missing Immutable::Hash #values returns the keys as a Vector with duplicates returns the keys as a Vector Immutable::List #add on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] Immutable::List #all? on a really big list doesn't run out of stack when empty with a block returns true with no block returns true when not empty with a block if the block always returns true returns true if the block ever returns false returns false with no block if all values are truthy returns true if any value is nil returns false if any value is false returns false Immutable::List #any? on a really big list doesn't run out of stack when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true ("A") returns true if the block ever returns true ("B") returns true if the block ever returns true ("C") returns true if the block ever returns true (nil) returns false if the block always returns false with no block returns true if any value is truthy returns false if all values are falsey Immutable::List #append is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] #concat is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] #+ is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] Immutable::List #at on a really big list doesn't run out of stack [] with 10 returns nil ["A"] with 10 returns nil ["A", "B", "C"] with 0 returns "A" ["A", "B", "C"] with 2 returns "C" ["A", "B", "C"] with -1 returns "C" ["A", "B", "C"] with -2 returns "B" ["A", "B", "C"] with -4 returns nil Immutable::List #break is lazy on [] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty Immutable::List #car is responded to on [] preserves the original returns nil #car is responded to on ["A"] preserves the original returns "A" #car is responded to on ["A", "B", "C"] preserves the original returns "A" #cadr is responded to on ["A", "B", "C"] preserves the original returns "B" #caddr is responded to on ["A", "B", "C"] preserves the original returns "C" #cadddr is responded to on ["A", "B", "C"] preserves the original returns nil #caddddr is responded to on ["A", "B", "C"] preserves the original returns nil #cdr is responded to on [] preserves the original returns Immutable::List[] #cdr is responded to on ["A"] preserves the original returns Immutable::List[] #cdr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List["B", "C"] #cddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List["C"] #cdddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List[] #cddddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List[] Immutable::List #chunk is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A", "B"], Immutable::List["C"]] Immutable::List #clear on [] preserves the original returns an empty list on ["A"] preserves the original returns an empty list on ["A", "B", "C"] preserves the original returns an empty list Immutable::List #combination is lazy on ["A", "B", "C", "D"] in groups of 1 preserves the original returns [Immutable::List["A"], Immutable::List["B"], Immutable::List["C"], Immutable::List["D"]] on ["A", "B", "C", "D"] in groups of 2 preserves the original returns [Immutable::List["A", "B"], Immutable::List["A", "C"], Immutable::List["A", "D"], Immutable::List["B", "C"], Immutable::List["B", "D"], Immutable::List["C", "D"]] on ["A", "B", "C", "D"] in groups of 3 preserves the original returns [Immutable::List["A", "B", "C"], Immutable::List["A", "B", "D"], Immutable::List["A", "C", "D"], Immutable::List["B", "C", "D"]] on ["A", "B", "C", "D"] in groups of 4 preserves the original returns [Immutable::List["A", "B", "C", "D"]] on ["A", "B", "C", "D"] in groups of 0 preserves the original returns [Immutable::List[]] on ["A", "B", "C", "D"] in groups of 5 preserves the original returns [] on [] in groups of 0 preserves the original returns [Immutable::List[]] on [] in groups of 1 preserves the original returns [] Immutable::List #compact is lazy on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on [nil] preserves the original returns [] on [nil, "B"] preserves the original returns ["B"] on ["A", nil] preserves the original returns ["A"] on [nil, nil] preserves the original returns [] on ["A", nil, "C"] preserves the original returns ["A", "C"] on [nil, "B", nil] preserves the original returns ["B"] Immutable::List #<=> with [] and [1] returns -1 with [1] and [] returns 1 with [] and [] returns 0 with [1] and [2] returns -1 with [2] and [1] returns 1 with [1] and [1] returns 0 with [1] and [1, 2] returns -1 with [1, 2] and [1] returns 1 with [1] and [1] returns 0 with [2, 3, 4] and [3, 4, 5] returns -1 with [3, 4, 5] and [2, 3, 4] returns 1 with [2, 3, 4] and [2, 3, 4] returns 0 Immutable::List #cons on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] Immutable .list with no arguments always returns the same instance returns an empty list with a number of items always returns a different instance is the same as repeatedly using #cons .stream with no block returns an empty list with a block repeatedly calls the block .interval for numbers is equivalent to a list with explicit values for strings is equivalent to a list with explicit values .repeat returns an infinite list with specified value for each element .replicate returns a list with the specified value repeated the specified number of times .iterate returns an infinite list where the first item is calculated by applying the block on the initial argument, the second item by applying the function on the previous result and so on .enumerate returns a list based on the values yielded from the enumerator realizes values as they are needed [] takes a variable number of items and returns a list returns an empty list when called without arguments Immutable::List on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::List #count on a really big list doesn't run out of stack on [] with a block returns 0 without a block returns length on [1] with a block returns 1 without a block returns length on [1, 2] with a block returns 1 without a block returns length on [1, 2, 3] with a block returns 2 without a block returns length on [1, 2, 3, 4] with a block returns 2 without a block returns length on [1, 2, 3, 4, 5] with a block returns 3 without a block returns length Immutable #cycle is lazy with an empty list returns an empty list with a non-empty list preserves the original infinitely cycles through all values Immutable::List #delete_at removes the element at the specified index makes no modification if the index is out of range Immutable::List #delete removes elements that are #== to the argument Immutable::List #drop is lazy with 10 from [] preserves the original returns [] with 10 from ["A"] preserves the original returns [] with -1 from ["A"] preserves the original returns ["A"] with 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] with 2 from ["A", "B", "C"] preserves the original returns ["C"] Immutable::List #drop_while is lazy on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator Immutable::List #each_chunk on a really big list doesn't run out of stack on [] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A", "B", "C"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator #each_slice on a really big list doesn't run out of stack on [] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A", "B", "C"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator Immutable::List #each on a really big list doesn't run out of stack on [] with a block iterates over the items in order returns nil without a block returns an Enumerator on ["A"] with a block iterates over the items in order returns nil without a block returns an Enumerator on ["A", "B", "C"] with a block iterates over the items in order returns nil without a block returns an Enumerator Immutable::List #each_with_index with no block returns an Enumerator with a block returns self iterates over the items in order, yielding item and index Immutable::List #empty? on a really big list doesn't run out of stack on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false Immutable::List Immutable::List["A", "B", "C"] should == ["A", "B", "C"] Immutable::List["A", "B", "C"] should not eql? ["A", "B", "C"] Immutable::List["A", "B", "C"] should not == # Immutable::List["A", "B", "C"] should not eql? # Immutable::List[] should == [] Immutable::List[] should not eql? [] Immutable::List[] should eql? Immutable::List[] Immutable::List[] should == Immutable::List[] Immutable::List[] should not eql? Immutable::List[nil] Immutable::List["A"] should not eql? Immutable::List[] Immutable::List["A"] should eql? Immutable::List["A"] Immutable::List["A"] should == Immutable::List["A"] Immutable::List["A"] should not eql? Immutable::List["B"] Immutable::List["A", "B"] should not eql? Immutable::List["A"] Immutable::List["A", "B", "C"] should eql? Immutable::List["A", "B", "C"] Immutable::List["A", "B", "C"] should == Immutable::List["A", "B", "C"] Immutable::List["C", "A", "B"] should not eql? Immutable::List["A", "B", "C"] Immutable::List["A"] should == ["A"] ["A"] should == Immutable::List["A"] Immutable::List["A"] should not eql? ["A"] ["A"] should not eql? Immutable::List["A"] #eql? on a really big list doesn't run out of stack Immutable::List #fill can replace a range of items at the beginning of a list can replace a range of items in the middle of a list can replace a range of items at the end of a list can replace all the items in a list can fill past the end of the list is lazy with 1 argument replaces all the items in the list by default with 2 arguments replaces up to the end of the list by default when index and length are 0 leaves the list unmodified Immutable::List #find_all is lazy with an empty array with a block preserves the original returns the found list without a block returns an Enumerator with a single item array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item single find_allable array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item multi-find_allable array with a block preserves the original returns the found list without a block returns an Enumerator Immutable::List #find_index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 #index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 Immutable::List #find on a really big list doesn't run out of stack on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator #detect on a really big list doesn't run out of stack on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator Immutable::List #flat_map with an empty list returns the flattened values as a Immutable::List returns a Immutable::List with a block that returns an empty list returns the flattened values as a Immutable::List returns a Immutable::List with a list of one item returns the flattened values as a Immutable::List returns a Immutable::List with a list of multiple items returns the flattened values as a Immutable::List returns a Immutable::List Immutable #flatten is lazy on [] preserves the original returns an empty list on ["A"] preserves the original returns an empty list on ["A", "B", "C"] preserves the original returns an empty list on ["A", Immutable::List["B"], "C"] preserves the original returns an empty list on [Immutable::List["A"], Immutable::List["B"], Immutable::List["C"]] preserves the original returns an empty list Immutable::List #grep is lazy without a block on [] returns [] on ["A"] returns ["A"] on [1] returns [] on ["A", 2, "C"] returns ["A", "C"] with a block on [] preserves the original returns [] on ["A"] preserves the original returns ["a"] on [1] preserves the original returns [] on ["A", 2, "C"] preserves the original returns ["a", "c"] Immutable::List #group_by on a really big list doesn't run out of stack with a block on [] returns [] on [1] returns [{true=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::List[3, 1], false=>Immutable::List[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::List[1], 2=>Immutable::List[2], 3=>Immutable::List[3], 4=>Immutable::List[4]}] #group on a really big list doesn't run out of stack with a block on [] returns [] on [1] returns [{true=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::List[3, 1], false=>Immutable::List[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::List[1], 2=>Immutable::List[2], 3=>Immutable::List[3], 4=>Immutable::List[4]}] Immutable::List #hash values are sufficiently distributed on a really big list doesn't run out of stack on an empty list returns 0 Immutable::List #head on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" Immutable::List #include? on a really big list doesn't run out of stack on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true #member? on a really big list doesn't run out of stack on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true Immutable::List #index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 Immutable::List #indices when called with a block is lazy on a large list which doesn't contain desired item doesn't blow the stack looking for "A" in [] returns [] looking for "B" in ["A"] returns [] looking for "B" in ["A", "B", "A"] returns [1] looking for "A" in ["A", "B", "A"] returns [0, 2] looking for 2 in [2] returns [0] looking for 2.0 in [2] returns [0] looking for 2.0 in [2.0] returns [0] looking for 2 in [2.0] returns [0] when called with a single argument is lazy looking for "A" in [] returns [] looking for "B" in ["A"] returns [] looking for "B" in ["A", "B", "A"] returns [1] looking for "A" in ["A", "B", "A"] returns [0, 2] looking for 2 in [2] returns [0] looking for 2.0 in [2] returns [0] looking for 2.0 in [2.0] returns [0] looking for 2 in [2.0] returns [0] Immutable::List #init is lazy on [] preserves the original returns the list without the last element: [] on ["A"] preserves the original returns the list without the last element: [] on ["A", "B", "C"] preserves the original returns the list without the last element: ["A", "B"] Immutable::List #inits is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A"], Immutable::List["A", "B"], Immutable::List["A", "B", "C"]] Immutable::List #insert can add items at the beginning of a list can add items in the middle of a list can add items at the end of a list can add items past the end of a list accepts a negative index, which counts back from the end of the list raises IndexError if a negative index is too great is lazy Immutable::List #inspect on a really big list doesn't run out of stack on [] returns "Immutable::List[]" returns a string which can be eval'd to get an equivalent object on ["A"] returns "Immutable::List[\"A\"]" returns a string which can be eval'd to get an equivalent object on ["A", "B", "C"] returns "Immutable::List[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent object Immutable::List #intersperse is lazy on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "|", "B", "|", "C"] Immutable::List #join on a really big list doesn't run out of stack with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) uses the default global separator Immutable::List #last on a really big list doesn't run out of stack on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "C" Immutable::List #<< adds an item onto the end of a list on an empty list returns a list with one item Immutable::List #map is lazy on [] with a block preserves the original returns [] is lazy without a block returns an Enumerator on ["A"] with a block preserves the original returns ["a"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["a", "b", "c"] is lazy without a block returns an Enumerator #collect is lazy on [] with a block preserves the original returns [] is lazy without a block returns an Enumerator on ["A"] with a block preserves the original returns ["a"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["a", "b", "c"] is lazy without a block returns an Enumerator Immutable::List #max on a really big list doesn't run out of stack with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::List without a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on natural sort order with a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on the specified transformer Immutable::List without a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on natural sort order with a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on the specified comparator Immutable::List #min on a really big list doesn't run out of stack with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::List ensures each node of a lazy list will only be realized on ONE thread, even when accessed by multiple threads doesn't go into an infinite loop if lazy list block raises an exception doesn't give horrendously bad performance if thread realizing the list sleeps Immutable::List #none? on a really big list doesn't run out of stack when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true ("A") returns false if the block ever returns true ("B") returns false if the block ever returns true ("C") returns false if the block ever returns true (nil) returns true if the block always returns false with no block returns false if any value is truthy returns true if all values are falsey Immutable::List #one? on a really big list doesn't run out of stack when empty with a block returns false with no block returns false when not empty with a block returns false if the block returns true more than once returns false if the block never returns true returns true if the block only returns true once with no block returns false if more than one value is truthy returns true if only one value is truthy Immutable::List #partition is lazy calls the passed block only once for each item returns a lazy list of items for which predicate is true returns a lazy list of items for which predicate is false calls the passed block only once for each item, even with multiple threads on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::List #permutation with no block returns an Enumerator with no argument yields all permutations of the list with a length argument yields all N-size permutations of the list with a length argument greater than length of list yields nothing with a length argument of 0 yields an empty list with a block returns the original list Immutable::List #pop with an empty list returns an empty list with a list with a few items removes the last item Immutable::List #product on a really big list doesn't run out of stack on [] returns 1 on [2] returns 2 on [1, 3, 5, 7, 11] returns 1155 Immutable::List #reduce on a really big list doesn't run out of stack on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on a really big list doesn't run out of stack on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::List #reject is lazy on [] with a block returns [] is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] is lazy without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] is lazy without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] is lazy without a block returns an Enumerator #delete_if is lazy on [] with a block returns [] is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] is lazy without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] is lazy without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] is lazy without a block returns an Enumerator Immutable::List #reverse is lazy on a really big list doesn't run out of stack on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["C", "B", "A"] Immutable::List #rotate when passed no argument returns a new list with the first element moved to the end with an integral argument n returns a new list with the first (n % size) elements moved to the end with a non-numeric argument raises a TypeError with an argument of zero (or one evenly divisible by list length) it returns self Immutable::List #sample returns a randomly chosen item Immutable::List #select is lazy with an empty array with a block preserves the original returns the selected list without a block returns an Enumerator with a single item array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item single selectable array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item multi-selectable array with a block preserves the original returns the selected list without a block returns an Enumerator Immutable::List #size on a really big list doesn't run out of stack on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 #length on a really big list doesn't run out of stack on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 Immutable::List #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the list when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the list when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range Immutable::List #sort is lazy on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] #sort_by is lazy on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] List#span is lazy given a predicate (in the form of a block), splits the list into two lists (returned as an array) such that elements in the first list (the prefix) are taken from the head of the list while the predicate is satisfied, and elements in the second list (the remainder) are the remaining elements from the list once the predicate is not satisfied. For example: given the list [] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2, 3] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [3] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2, 3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [2, 3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [2] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder Immutable::List #split_at is lazy on [] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2, 3] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2, 3, 4] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder Immutable::List #subsequences yields all sublists with 1 or more consecutive items with no block returns an Enumerator Immutable::List #sum on a really big list doesn't run out of stack on [] returns 0 on [2] returns 2 on [1, 3, 5, 7, 11] returns 27 Immutable::List #tail on a really big list doesn't run out of stack on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] Immutable::List #tails is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A", "B", "C"], Immutable::List["B", "C"], Immutable::List["C"]] Immutable::List #take is lazy 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] -1 from ["A"] preserves the original returns [] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] Immutable::List #take_while is lazy on [] with a block returns [] preserves the original is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original is lazy without a block returns an Enumerator Immutable::List #to_a on a really big list doesn't run out of stack on [] returns [] leaves the original unchanged returns a mutable array on ["A"] returns ["A"] leaves the original unchanged returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] leaves the original unchanged returns a mutable array #entries on a really big list doesn't run out of stack on [] returns [] leaves the original unchanged returns a mutable array on ["A"] returns ["A"] leaves the original unchanged returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] leaves the original unchanged returns a mutable array Immutable::List #to_ary on a really big list doesn't run out of stack enables implicit conversion to block parameters method arguments works with splat Immutable::List #to_list on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::List #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values Immutable::List #transpose takes a list of lists and returns a list of all the first elements, all the 2nd elements, and so on only goes as far as the shortest list Immutable::List #union is lazy returns [] for [] and [] for [] and [] returns ["A"] for ["A"] and [] for [] and ["A"] returns ["A", "B", "C"] for ["A", "B", "C"] and [] for [] and ["A", "B", "C"] returns ["A"] for ["A", "A"] and ["A"] for ["A"] and ["A", "A"] #| is lazy returns [] for [] and [] for [] and [] returns ["A"] for ["A"] and [] for [] and ["A"] returns ["A", "B", "C"] for ["A", "B", "C"] and [] for [] and ["A", "B", "C"] returns ["A"] for ["A", "A"] and ["A"] for ["A"] and ["A", "A"] Immutable::List #uniq is lazy when passed a block uses the block to identify duplicates on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on ["A", "B", "A", "C", "C"] preserves the original returns ["A", "B", "C"] Immutable::List #zip is lazy on [] and [] returns [] on ["A"] and ["aye"] returns [Immutable::List["A", "aye"]] on ["A"] and [] returns [Immutable::List["A", nil]] on [] and ["A"] returns [Immutable::List[nil, "A"]] on ["A", "B", "C"] and ["aye", "bee", "see"] returns [Immutable::List["A", "aye"], Immutable::List["B", "bee"], Immutable::List["C", "see"]] Immutable .from with {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} as input should return Immutable::Hash["b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "a" => 1, "d" => Immutable::Set[6, 7, 5], "e" => Immutable::Hash["f" => 8, "g" => 9], "h" => /ijk/] with {} as input should return Immutable::Hash[] with {"a"=>1, "b"=>2, "c"=>3} as input should return Immutable::Hash["c" => 3, "b" => 2, "a" => 1] with [] as input should return Immutable::Vector[] with [1, 2, 3] as input should return Immutable::Vector[1, 2, 3] with # as input should return Immutable::Set[] with # as input should return Immutable::Set[3, 1, 2] with 42 as input should return 42 with #> as input should return #> with # as input should return Immutable::Hash[:name => nil, :address => nil] with # as input should return Immutable::Hash[:name => "Dave", :address => "123 Main"] with mixed object should return Immutable data .to_ruby with Immutable::Hash["b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "a" => 1, "d" => Immutable::Set[6, 7, 5], "e" => Immutable::Hash["f" => 8, "g" => 9], "h" => /ijk/] as input should return {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} with Immutable::Hash[] as input should return {} with Immutable::Hash["c" => 3, "b" => 2, "a" => 1] as input should return {"a"=>1, "b"=>2, "c"=>3} with Immutable::Vector[] as input should return [] with Immutable::Vector[1, 2, 3] as input should return [1, 2, 3] with Immutable::Set[] as input should return # with Immutable::Set[3, 1, 2] as input should return # with 42 as input should return 42 with #> as input should return #> with Immutable::Deque[] as input should return [] with Immutable::Deque[Immutable::Hash["a" => 1]] as input should return [{"a" => 1}] with Immutable::SortedSet[] as input should return ::SortedSet.new with Immutable::SortedSet[1, 2, 3] as input should return ::SortedSet.new with mixed object should return Ruby data structures Immutable::Set #add can add nil to a set works on large sets, with many combinations of input with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns self #<< can add nil to a set works on large sets, with many combinations of input with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns self #add? with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns false Immutable::Set #all? when empty with a block returns true with no block returns true when not empty with a block returns true if the block always returns true returns false if the block ever returns false propagates an exception from the block stops iterating as soon as the block returns false with no block returns true if all values are truthy returns false if any value is nil returns false if any value is false Immutable::Set #any? when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true ("A") returns true if the block ever returns true ("B") returns true if the block ever returns true ("C") returns true if the block ever returns true (nil) returns false if the block always returns false propagates exceptions raised in the block stops iterating as soon as the block returns true with no block returns true if any value is truthy returns false if all values are falsey Immutable::Set #clear on [] preserves the original returns an empty set on ["A"] preserves the original returns an empty set on ["A", "B", "C"] preserves the original returns an empty set from a subclass returns an empty instance of the subclass Immutable::Set #compact on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on [nil] preserves the original returns [] on [nil, "B"] preserves the original returns ["B"] on ["A", nil] preserves the original returns ["A"] on [nil, nil] preserves the original returns [] on ["A", nil, "C"] preserves the original returns ["A", "C"] on [nil, "B", nil] preserves the original returns ["B"] Immutable::Set .set with no values returns the empty set with a list of values is equivalent to repeatedly using #add Immutable::Set #dup returns self #clone returns self Immutable::Set #count works on large sets on [] with a block returns 0 without a block returns length on [1] with a block returns 1 without a block returns length on [1, 2] with a block returns 1 without a block returns length on [1, 2, 3] with a block returns 2 without a block returns length on [1, 2, 3, 4] with a block returns 2 without a block returns length on [1, 2, 3, 4, 5] with a block returns 3 without a block returns length Immutable::Set #delete works on large sets, with many combinations of input with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns self when removing the last value in a set returns the canonical empty set #delete? with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns false Immutable::Set #difference works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set #subtract works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set #- works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set Immutable::Set #disjoint? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["D", "E"] returns true for ["F", "G", "H", "I"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["D", "E", "F", "G"] and ["A", "B", "C"] returns true Immutable::Set #each yields both of a pair of colliding keys without a block returns an Enumerator with an empty block returns self with a block yields all values Immutable::Set #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false on [nil] returns false on [false] returns false .empty returns the canonical empty set from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Set Immutable::Set #== when comparing to a standard set returns false when comparing to a arbitrary object returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true Immutable::Set #eql? when comparing to a standard set returns false when comparing to a arbitrary object returns false when comparing with a subclass of Immutable::Set returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true Immutable::Set #exclusion works for a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B", "C", "D"] doesn't modify the original Sets returns ["A", "D"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["D", "E", "F"] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F"] when passed a Ruby Array returns the expected Set #^ works for a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B", "C", "D"] doesn't modify the original Sets returns ["A", "D"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["D", "E", "F"] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F"] when passed a Ruby Array returns the expected Set Immutable::Set #find on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator #detect on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator Immutable::Set #first returns nil if only member of set is nil returns the first item yielded by #each on an empty set returns nil on a non-empty set returns an arbitrary value from the set Immutable #flatten on ["A"] preserves the original returns the inlined values on ["A", "B", "C"] preserves the original returns the inlined values on ["A", Immutable::Set["B"], "C"] preserves the original returns the inlined values on [Immutable::Set["A"], Immutable::Set["B"], Immutable::Set["C"]] preserves the original returns the inlined values on an empty set returns an empty set on a set with multiple levels of nesting inlines lower levels of nesting from a subclass returns an instance of the subclass Immutable::Set #grep without a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values with a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values Immutable::Set #grep_v without a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values with a block resulting items are processed with the block returns the filtered values Immutable::Set #group_by returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass #group returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass #classify returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass Immutable::Set #hash generates the same hash value for a set regardless of the order things were added to it values are sufficiently distributed on an empty set returns 0 Immutable::Set #include? returns true for an existing value ("A") returns true for an existing value ("B") returns true for an existing value ("C") returns true for an existing value (2.0) returns true for an existing value (nil) returns false for a non-existing value returns true even if existing value is nil returns true even if existing value is false returns false for a mutable item which is mutated after adding uses #eql? for equality returns the right answers after a lot of addings and removings #member? returns true for an existing value ("A") returns true for an existing value ("B") returns true for an existing value ("C") returns true for an existing value (2.0) returns true for an existing value (nil) returns false for a non-existing value returns true even if existing value is nil returns true even if existing value is false returns false for a mutable item which is mutated after adding uses #eql? for equality returns the right answers after a lot of addings and removings Immutable::Set #inspect on [] returns "Immutable::Set[]" returns a string which can be eval'd to get an equivalent set on ["A"] returns "Immutable::Set[\"A\"]" returns a string which can be eval'd to get an equivalent set on ["A", "B", "C"] returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set from a subclass returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set Immutable::Set #intersect? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["D", "E"] returns false for ["F", "G", "H", "I"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["D", "E", "F", "G"] and ["A", "B", "C"] returns false Immutable::Set #intersection returns results consistent with Array#& for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and [] returns [], without changing the original Sets for [] and ["A"] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] returns ["B"], without changing the original Sets for ["B"] and ["A", "B", "C"] returns ["B"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"], without changing the original Sets for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set #& returns results consistent with Array#& for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and [] returns [], without changing the original Sets for [] and ["A"] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] returns ["B"], without changing the original Sets for ["B"] and ["A", "B", "C"] returns ["B"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"], without changing the original Sets for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set Immutable::Set #join with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) on ['A', 'B', 'C'] preserves the original returns nil Immutable::Set #map works on large sets when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass when multiple items map to the same value filters out the duplicates #collect works on large sets when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass when multiple items map to the same value filters out the duplicates Immutable::Set #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to test items by key after loading Immutable::Set #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::Set #min with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::Set .new initializes a new set accepts a Range returns a Set which doesn't change even if the initializer is mutated is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass [] accepts any number of arguments and initializes a new set Immutable::Set #none? when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true ("A") returns false if the block ever returns true ("B") returns false if the block ever returns true ("C") returns false if the block ever returns true (nil) returns true if the block always returns false stops iterating as soon as the block returns true with no block returns false if any value is truthy returns true if all values are falsey Immutable::Set #one? when empty with a block returns false with no block returns false when not empty with a block returns false if the block returns true more than once returns false if the block never returns true returns true if the block only returns true once with no block returns false if more than one value is truthy returns true if only one value is truthy returns false if no values are truthy Immutable::Set #partition on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::Set #product on [] returns 1 doesn't change the original Set on [2] returns 2 doesn't change the original Set on [1, 3, 5, 7, 11] returns 1155 doesn't change the original Set Immutable::Set #reduce on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns 6 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns 6 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::Set #reject when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns self on a large set, with many combinations of input still works #delete_if when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns self on a large set, with many combinations of input still works Immutable::Set #reverse_each without a block returns an Enumerator with an empty block returns self with a block yields all values Immutable::Set #sample returns a randomly chosen item Immutable::Set #select works on a large set, with many combinations of input when everything matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class #find_all works on a large set, with many combinations of input when everything matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class Immutable::Set #size returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] #length returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] Immutable::Set #sort on [] with a block returns [] doesn't change the original Set without a block returns [] doesn't change the original Set on ["A"] with a block returns ["A"] doesn't change the original Set without a block returns ["A"] doesn't change the original Set on ["Ichi", "Ni", "San"] with a block returns ["Ni", "San", "Ichi"] doesn't change the original Set without a block returns ["Ichi", "Ni", "San"] doesn't change the original Set #sort_by on [] with a block returns [] doesn't change the original Set without a block returns [] doesn't change the original Set on ["A"] with a block returns ["A"] doesn't change the original Set without a block returns ["A"] doesn't change the original Set on ["Ichi", "Ni", "San"] with a block returns ["Ni", "San", "Ichi"] doesn't change the original Set without a block returns ["Ichi", "Ni", "San"] doesn't change the original Set #sort_by calls the passed block no more than twice for each item Immutable::Set #subset? for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #<= for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #proper_subset? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #< for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false Immutable::Set #sum on [] returns 0 doesn't change the original Set on [2] returns 2 doesn't change the original Set on [1, 3, 5, 7, 11] returns 27 doesn't change the original Set Immutable::Set #superset? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #>= for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #proper_superset? for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #> for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true Immutable::Set #to_a on 'a'..'a' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'b' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'c' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'d' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'e' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'f' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'g' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'h' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'i' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'j' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'k' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'l' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'m' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'n' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'o' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'p' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'q' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'r' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'s' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'t' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'u' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'v' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'w' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'x' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'y' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'z' returns an equivalent array doesn't change the original Set returns a mutable array #entries on 'a'..'a' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'b' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'c' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'d' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'e' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'f' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'g' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'h' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'i' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'j' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'k' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'l' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'m' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'n' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'o' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'p' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'q' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'r' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'s' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'t' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'u' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'v' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'w' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'x' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'y' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'z' returns an equivalent array doesn't change the original Set returns a mutable array Immutable::Set #to_list on [] returns a list doesn't change the original Set the returned list has the correct length contains all values on ["A"] returns a list doesn't change the original Set the returned list has the correct length contains all values on ["A", "B", "C"] returns a list doesn't change the original Set the returned list has the correct length contains all values Immutable::Set #to_set on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::Set #union for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #| for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #+ for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #merge for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self Immutable::SortedSet #above when called without a block returns a sorted set of all items higher than the argument when called with a block yields all the items higher than the argument on an empty set returns an empty set with an argument higher than all the values in the set returns an empty set Immutable::SortedSet #add with a unique value preserves the original returns a copy with the superset of values (in order) with a duplicate value preserves the original values returns self on a set ordered by a comparator inserts the new item in the correct place #<< with a unique value preserves the original returns a copy with the superset of values (in order) with a duplicate value preserves the original values returns self on a set ordered by a comparator inserts the new item in the correct place #add? with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns false Immutable::SortedSet #at [] with 10 returns nil ["A"] with 10 returns nil ["A", "B", "C"] with 0 returns "A" ["A", "B", "C"] with 1 returns "B" ["A", "B", "C"] with 2 returns "C" ["A", "B", "C"] with 3 returns nil ["A", "B", "C"] with -1 returns "C" ["A", "B", "C"] with -2 returns "B" ["A", "B", "C"] with -3 returns "A" ["A", "B", "C"] with -4 returns nil Immutable::SortedSet #below when called without a block returns a sorted set of all items lower than the argument when called with a block yields all the items lower than the argument on an empty set returns an empty set with an argument lower than all the values in the set returns an empty set Immutable::SortedSet #between when called without a block returns a sorted set of all items from the first argument to the second when called with a block yields all the items lower than the argument on an empty set returns an empty set with a 'to' argument lower than the 'from' argument returns an empty set Immutable::SortedSet #clear on [] preserves the original returns an empty set on ["A"] preserves the original returns an empty set on ["A", "B", "C"] preserves the original returns an empty set from a subclass returns an empty instance of the subclass with a comparator returns an empty instance with same comparator Immutable::SortedSet on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self Immutable::SortedSet #delete_at removes the element at the specified index makes no modification if the index is out of range Immutable::SortedSet #delete on an empty set returns an empty set with an existing value preserves the original returns a copy with the remaining of values with a non-existing value preserves the original values returns self when removing the last value in a sorted set maintains the set order when the set is in natural order returns the canonical empty set on [1, 2, 3], when deleting [1, 2, 3] returns [] on [1, 2, 3, 4], when deleting [1, 2, 3] returns [4] on [1, 2, 3, 4], when deleting [1, 2, 4] returns [3] on [1, 2, 3, 4], when deleting [1, 3, 4] returns [2] on [1, 2, 3, 4], when deleting [2, 3, 4] returns [1] on [1, 2, 3, 4, 5], when deleting [1, 2, 3] returns [4, 5] on [1, 2, 3, 4, 5], when deleting [1, 2, 4] returns [3, 5] on [1, 2, 3, 4, 5], when deleting [1, 2, 5] returns [3, 4] on [1, 2, 3, 4, 5], when deleting [1, 3, 4] returns [2, 5] on [1, 2, 3, 4, 5], when deleting [1, 3, 5] returns [2, 4] on [1, 2, 3, 4, 5], when deleting [1, 4, 5] returns [2, 3] on [1, 2, 3, 4, 5], when deleting [2, 3, 4] returns [1, 5] on [1, 2, 3, 4, 5], when deleting [2, 3, 5] returns [1, 4] on [1, 2, 3, 4, 5], when deleting [2, 4, 5] returns [1, 3] on [1, 2, 3, 4, 5], when deleting [3, 4, 5] returns [1, 2] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 3] returns [4, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 4] returns [3, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 5] returns [3, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 6] returns [3, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 4] returns [2, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 5] returns [2, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 6] returns [2, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 4, 5] returns [2, 3, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 4, 6] returns [2, 3, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 5, 6] returns [2, 3, 4] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 4] returns [1, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 5] returns [1, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 6] returns [1, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [2, 4, 5] returns [1, 3, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 4, 6] returns [1, 3, 5] on [1, 2, 3, 4, 5, 6], when deleting [2, 5, 6] returns [1, 3, 4] on [1, 2, 3, 4, 5, 6], when deleting [3, 4, 5] returns [1, 2, 6] on [1, 2, 3, 4, 5, 6], when deleting [3, 4, 6] returns [1, 2, 5] on [1, 2, 3, 4, 5, 6], when deleting [3, 5, 6] returns [1, 2, 4] on [1, 2, 3, 4, 5, 6], when deleting [4, 5, 6] returns [1, 2, 3] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 3] returns [4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 4] returns [3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 5] returns [3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 6] returns [3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 7] returns [3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 4] returns [2, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 5] returns [2, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 6] returns [2, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 7] returns [2, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 5] returns [2, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 6] returns [2, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 7] returns [2, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 5, 6] returns [2, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 5, 7] returns [2, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 6, 7] returns [2, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 4] returns [1, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 5] returns [1, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 6] returns [1, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 7] returns [1, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 5] returns [1, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 6] returns [1, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 7] returns [1, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 5, 6] returns [1, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 5, 7] returns [1, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 6, 7] returns [1, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 5] returns [1, 2, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 6] returns [1, 2, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 7] returns [1, 2, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 5, 6] returns [1, 2, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 5, 7] returns [1, 2, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 6, 7] returns [1, 2, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 5, 6] returns [1, 2, 3, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 5, 7] returns [1, 2, 3, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 6, 7] returns [1, 2, 3, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [5, 6, 7] returns [1, 2, 3, 4] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 9] returns [3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 9] returns [2, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 9] returns [2, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 9] returns [2, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 9] returns [2, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 7, 9] returns [2, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 8, 9] returns [2, 3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 9] returns [1, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 9] returns [1, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 9] returns [1, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 9] returns [1, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 7, 9] returns [1, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 8, 9] returns [1, 3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 9] returns [1, 2, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 9] returns [1, 2, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 9] returns [1, 2, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 7, 9] returns [1, 2, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 8, 9] returns [1, 2, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 9] returns [1, 2, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 9] returns [1, 2, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 7, 9] returns [1, 2, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 8, 9] returns [1, 2, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 9] returns [1, 2, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 7, 9] returns [1, 2, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 8, 9] returns [1, 2, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 7, 9] returns [1, 2, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 8, 9] returns [1, 2, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [7, 8, 9] returns [1, 2, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 9] returns [3, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 10] returns [3, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 9] returns [2, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 10] returns [2, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 9] returns [2, 3, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 10] returns [2, 3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 9] returns [2, 3, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 10] returns [2, 3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 9] returns [2, 3, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 10] returns [2, 3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 9] returns [2, 3, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 10] returns [2, 3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 8, 9] returns [2, 3, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 8, 10] returns [2, 3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 9, 10] returns [2, 3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 9] returns [1, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 10] returns [1, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 9] returns [1, 3, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 10] returns [1, 3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 9] returns [1, 3, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 10] returns [1, 3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 9] returns [1, 3, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 10] returns [1, 3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 9] returns [1, 3, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 10] returns [1, 3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 8, 9] returns [1, 3, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 8, 10] returns [1, 3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 9, 10] returns [1, 3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 9] returns [1, 2, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 10] returns [1, 2, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 9] returns [1, 2, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 10] returns [1, 2, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 9] returns [1, 2, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 10] returns [1, 2, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 9] returns [1, 2, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 10] returns [1, 2, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 8, 9] returns [1, 2, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 8, 10] returns [1, 2, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 9, 10] returns [1, 2, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 9] returns [1, 2, 3, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 10] returns [1, 2, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 9] returns [1, 2, 3, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 10] returns [1, 2, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 9] returns [1, 2, 3, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 10] returns [1, 2, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 8, 9] returns [1, 2, 3, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 8, 10] returns [1, 2, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 9, 10] returns [1, 2, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 9] returns [1, 2, 3, 4, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 10] returns [1, 2, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 9] returns [1, 2, 3, 4, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 10] returns [1, 2, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 8, 9] returns [1, 2, 3, 4, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 8, 10] returns [1, 2, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 9, 10] returns [1, 2, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 9] returns [1, 2, 3, 4, 5, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 10] returns [1, 2, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 8, 9] returns [1, 2, 3, 4, 5, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 8, 10] returns [1, 2, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 9, 10] returns [1, 2, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 8, 9] returns [1, 2, 3, 4, 5, 6, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 8, 10] returns [1, 2, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 9, 10] returns [1, 2, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [8, 9, 10] returns [1, 2, 3, 4, 5, 6, 7] #delete? with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns false Immutable::SortedSet #difference for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] #subtract for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] #- for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] Immutable::SortedSet #disjoint? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["D", "E"] returns true for ["F", "G", "H", "I"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["D", "E", "F", "G"] and ["A", "B", "C"] returns true Immutable::SortedSet #drop 0 from [] preserves the original returns [] 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns [] 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] 1 from ["A", "B", "C"] preserves the original returns ["B", "C"] 2 from ["A", "B", "C"] preserves the original returns ["C"] 3 from ["A", "B", "C"] preserves the original returns [] when argument is zero returns self when the set has a custom order maintains the custom order keeps the comparator even when set is cleared when called on a subclass should return an instance of the subclass Immutable::SortedSet #drop_while on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator on ["A", "B", "C", "D", "E", "F", "G"] with a block preserves the original returns ["C", "D", "E", "F", "G"] without a block returns an Enumerator Immutable::SortedSet #each with no block returns an Enumerator with a block returns self iterates over the items in order Immutable::SortedSet #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false .empty returns the canonical empty set from a subclass returns an empty instance of the subclass Immutable::SortedSet #eql? when comparing to a standard set returns false when comparing to a arbitrary object returns false when comparing to an Immutable::Set returns false when comparing with a subclass of Immutable::SortedSet returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true with the same values, but a different sort order returns false Immutable::SortedSet #exclusion for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["B", "C", "D"] returns ["A", "D"] for ["A", "B", "C"] and ["D", "E", "F"] returns ["A", "B", "C", "D", "E", "F"] #^ for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["B", "C", "D"] returns ["A", "D"] for ["A", "B", "C"] and ["D", "E", "F"] returns ["A", "B", "C", "D", "E", "F"] Immutable::SortedSet #fetch gives precedence to default block over default argument if passed both with no default provided when the index exists returns the value at the index when the key does not exist raises an IndexError with a default value when the index exists returns the value at the index when the index does not exist returns the default value with a default block when the index exists returns the value at the index when the index does not exist invokes the block with the missing index as parameter Immutable::SortedSet #find_index looking for "A" in [] without block returns nil looking for "A" in [] with block returns nil looking for nil in [] with block returns nil looking for "A" in ["A"] without block returns 0 looking for "A" in ["A"] with block returns 0 looking for "B" in ["A"] without block returns nil looking for "B" in ["A"] with block returns nil looking for nil in ["A"] with block returns nil looking for "A" in ["A", "B", "C"] without block returns 0 looking for "A" in ["A", "B", "C"] with block returns 0 looking for "B" in ["A", "B", "C"] without block returns 1 looking for "B" in ["A", "B", "C"] with block returns 1 looking for "C" in ["A", "B", "C"] without block returns 2 looking for "C" in ["A", "B", "C"] with block returns 2 looking for "D" in ["A", "B", "C"] without block returns nil looking for "D" in ["A", "B", "C"] with block returns nil looking for 1 in 0..1 without block returns 1 looking for 1 in 0..1 with block returns 1 looking for 5 in 0..10 without block returns 5 looking for 5 in 0..10 with block returns 5 looking for 10 in 0..10 without block returns 10 looking for 10 in 0..10 with block returns 10 looking for 2 in [2] without block returns 0 looking for 2 in [2] with block returns 0 looking for 2.0 in [2] without block returns 0 looking for 2.0 in [2] with block returns 0 looking for 2.0 in [2.0] without block returns 0 looking for 2.0 in [2.0] with block returns 0 looking for 2 in [2.0] without block returns 0 looking for 2 in [2.0] with block returns 0 #index looking for "A" in [] without block returns nil looking for "A" in [] with block returns nil looking for nil in [] with block returns nil looking for "A" in ["A"] without block returns 0 looking for "A" in ["A"] with block returns 0 looking for "B" in ["A"] without block returns nil looking for "B" in ["A"] with block returns nil looking for nil in ["A"] with block returns nil looking for "A" in ["A", "B", "C"] without block returns 0 looking for "A" in ["A", "B", "C"] with block returns 0 looking for "B" in ["A", "B", "C"] without block returns 1 looking for "B" in ["A", "B", "C"] with block returns 1 looking for "C" in ["A", "B", "C"] without block returns 2 looking for "C" in ["A", "B", "C"] with block returns 2 looking for "D" in ["A", "B", "C"] without block returns nil looking for "D" in ["A", "B", "C"] with block returns nil looking for 1 in 0..1 without block returns 1 looking for 1 in 0..1 with block returns 1 looking for 5 in 0..10 without block returns 5 looking for 5 in 0..10 with block returns 5 looking for 10 in 0..10 without block returns 10 looking for 10 in 0..10 with block returns 10 looking for 2 in [2] without block returns 0 looking for 2 in [2] with block returns 0 looking for 2.0 in [2] without block returns 0 looking for 2.0 in [2] with block returns 0 looking for 2.0 in [2.0] without block returns 0 looking for 2.0 in [2.0] with block returns 0 looking for 2 in [2.0] without block returns 0 looking for 2 in [2.0] with block returns 0 Immutable::SortedSet #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" on ["Z", "Y", "X"] returns "X" Immutable::SortedSet #from when called without a block returns a sorted set of all items equal to or greater than the argument when called with a block yields all the items equal to or greater than than the argument on an empty set returns an empty set with an argument higher than all the values in the set returns an empty set Immutable::SortedSet #group_by with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass #group with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass #classify with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass Immutable::SortedSet #include? returns true for an existing value (1) returns true for an existing value (2) returns true for an existing value (3) returns true for an existing value (4.0) returns false for a non-existing value uses #<=> for equality #member? returns true for an existing value (1) returns true for an existing value (2) returns true for an existing value (3) returns true for an existing value (4.0) returns false for a non-existing value uses #<=> for equality Immutable::SortedSet #inspect on [] returns "Immutable::SortedSet[]" returns a string which can be eval'd to get an equivalent set on ["A"] returns "Immutable::SortedSet[\"A\"]" returns a string which can be eval'd to get an equivalent set on ["C", "B", "A"] returns "Immutable::SortedSet[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent set from a subclass returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set Immutable::SortedSet #intersect? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["D", "E"] returns false for ["F", "G", "H", "I"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["D", "E", "F", "G"] and ["A", "B", "C"] returns false Immutable::SortedSet #intersection for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns [] for [] and ["A"] returns [] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and ["B"] returns ["B"] for ["B"] and ["A", "B", "C"] returns ["B"] for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"] for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"] for ["A", "M", "T", "X"] and ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] returns ["M", "T"] for ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] and ["A", "M", "T", "X"] returns ["M", "T"] #& for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns [] for [] and ["A"] returns [] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and ["B"] returns ["B"] for ["B"] and ["A", "B", "C"] returns ["B"] for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"] for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"] for ["A", "M", "T", "X"] and ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] returns ["M", "T"] for ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] and ["A", "M", "T", "X"] returns ["M", "T"] Immutable::SortedSet #last with an empty set returns the last item with a single item set returns the last item with a multi-item set returns the last item Immutable::SortedSet #map when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values filters out duplicates with no block returns an Enumerator on a set ordered by a comparator returns a new set with the mapped values filters out duplicates #collect when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values filters out duplicates with no block returns an Enumerator on a set ordered by a comparator returns a new set with the mapped values filters out duplicates Immutable::SortedSet #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by index after loading raises a TypeError if set has a custom sort order Immutable::SortedSet #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::SortedSet #min on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" on [1, 2, 3, 4, 5] returns 1 on [0, -0.0, 2.2, -4, -4.2] returns -4.2 Immutable::SortedSet .new accepts a single enumerable argument and creates a new sorted set also works with a Range doesn't mutate the initializer doesn't change if the initializer is later mutated is amenable to overriding of #initialize accepts a block with arity 1 accepts a block with arity 2 can use a block produced by Symbol#to_proc filters out duplicates when passed a comparator with arity 2 still filters out duplicates still doesn't mutate the initializer still doesn't change if the initializer is later mutated when passed a block with arity 1 still filters out duplicates still doesn't mutate the initializer still doesn't change if the initializer is later mutated from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new sorted set filters out duplicate items Immutable::SortedSet #reverse_each with no block returns an Enumerator with a block returns self iterates over the items in order Immutable::SortedSet #sample returns a randomly chosen item Immutable::SortedSet #select when everything matches preserves the original returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class #find_all when everything matches preserves the original returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class Immutable::SortedSet #size returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] #length returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] Immutable::SortedSet #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the sorted_set when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed an empty Range does not lose custom sort order when passed a length of zero does not lose custom sort order when passed a subclass of Range works the same as with a Range on a subclass of SortedSet with index and count or a range, returns an instance of the subclass #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the sorted_set when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed an empty Range does not lose custom sort order when passed a length of zero does not lose custom sort order when passed a subclass of Range works the same as with a Range on a subclass of SortedSet with index and count or a range, returns an instance of the subclass Immutable::SortedSet #sort on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] #sort_by on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] sort on a SortedSet with custom sort order returns a SortedSet with the natural sort order Immutable::SortedSet #subset? for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #proper_subset? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false Immutable::SortedSet #superset? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #proper_superset? for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true Immutable::SortedSet #take 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] when argument is at least size of receiver returns self when the set has a custom order maintains the custom order keeps the comparator even when set is cleared when called on a subclass should return an instance of the subclass Immutable::SortedSet #take_while on [] with a block returns [] preserves the original without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original without a block returns an Enumerator Immutable::SortedSet #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values Immutable::SortedSet #union for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #| for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #+ for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #merge for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] union filters out duplicates when passed an Array doesn't mutate an Array which is passed in on a set ordered by a comparator still filters out duplicates when passed an Array still doesn't mutate an Array which is passed in Immutable::SortedSet #up_to when called without a block returns a sorted set of all items equal to or less than the argument when called with a block yields all the items equal to or less than than the argument on an empty set returns an empty set with an argument less than all the values in the set returns an empty set Immutable::SortedSet .uniq_by_comparator! can handle empty arrays can handle arrays with 1 element can handle arrays with 2 elements and no dupes can handle arrays with 2 elements and dupes can handle arrays with lots of elements works with funny comparators Immutable::SortedSet #values_at accepts any number of indices, and returns a sorted_set of items at those indices when passed invalid indices filters them out when passed no arguments returns an empty sorted_set from a subclass returns an instance of the subclass Immutable::Vector #add with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass #<< with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass #push with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass Immutable::Vector #any? when created with no values with a block returns false with a block returns false when created with values with a block that returns true returns true with a block that doesn't return true returns false without a block with some values that are truthy returns true with all values that are falsey returns false Immutable::Vector #assoc searches for a 2-element array with a given 1st item returns nil if a matching 1st item is not found uses #== to compare 1st items with provided object skips elements which are not indexable #rassoc searches for a 2-element array with a given 2nd item returns nil if a matching 2nd item is not found uses #== to compare 2nd items with provided object skips elements which are not indexable Immutable::Vector #bsearch with a block which returns false for elements below desired position, and true for those at/above returns the first element for which the predicate is true if the block always returns false returns nil if the block always returns true returns the first element with a block which returns a negative number for elements below desired position, zero for the right element, and positive for those above returns the element for which the block returns zero if the block always returns positive returns nil if the block always returns negative returns nil if the block returns sometimes positive, sometimes negative, but never zero returns nil if not passed a block returns an Enumerator on an empty vector returns nil Immutable::Vector #clear on [] preserves the original returns an empty vector from a subclass returns an instance of the subclass on ["A"] preserves the original returns an empty vector from a subclass returns an instance of the subclass on ["A", "B", "C"] preserves the original returns an empty vector from a subclass returns an instance of the subclass Immutable::Vector #combination works on many combinations of input leaves the original unmodified with a block returns self with no block returns an Enumerator when passed an argument which is out of bounds yields nothing and returns self when passed an argument zero yields an empty array when passed an argument equal to the vector's length yields self as an array when passed an argument 1 yields each item in the vector, as single-item vectors when passed another integral argument yields all combinations of the given length on an empty vector works the same Immutable::Vector #compact returns a new Vector with all nils removed doesn't remove false on an empty vector returns self from a subclass returns an instance of the subclass Immutable::Vector #<=> with [] and [1] returns -1 with [1] and [] returns 1 with [] and [] returns 0 with [1] and [2] returns -1 with [2] and [1] returns 1 with [1] and [1] returns 0 with [1] and [1, 2] returns -1 with [1, 2] and [1] returns 1 with [1] and [1] returns 0 with [2, 3, 4] and [3, 4, 5] returns -1 with [3, 4, 5] and [2, 3, 4] returns 1 with [2, 3, 4] and [2, 3, 4] returns 0 with [[0]] and [[1]] returns -1 with [[1]] and [[0]] returns 1 with [[0]] and [[0]] returns 0 Immutable::Vector #+ preserves the original appends the elements in the other enumerable on a 1-item vector works the same on a 31-item vector works the same on a 32-item vector works the same on a 33-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same #concat preserves the original appends the elements in the other enumerable on a 1-item vector works the same on a 31-item vector works the same on a 32-item vector works the same on a 33-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same Immutable::Vector on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self Immutable::Vector #count returns the number of elements returns the number of elements that equal the argument returns the number of element for which the block evaluates to true Immutable::Vector #delete_at removes the element at the specified index makes no modification if the index is out of range works when deleting last item at boundary where vector trie needs to get shallower works on an empty vector works on a vector with 1 item works on a vector with 32 items has the right size and contents after many deletions Immutable::Vector #delete removes elements that are #== to the argument on an empty vector returns self on a subclass of Vector returns an instance of the subclass Immutable::Vector #dig returns value at the index with one argument returns value at index in nested arrays raises an error when indexing deeper than possible returns nil if you index past the end of an array raises an error when indexing with a key vectors don't understand Immutable::Vector #drop raises an ArgumentError if number of elements specified is negative 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns [] 1 from ["A"] preserves the original returns [] 0 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] 2 from ["A", "B", "C"] preserves the original returns ["C"] 3 from 1..32 preserves the original returns 4..32 32 from 1..33 preserves the original returns [33] when number of elements specified is zero returns self Immutable::Vector #drop_while returns an empty vector if block is always true stops dropping items if block returns nil stops dropping items if block returns false on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator on an empty vector returns an empty vector Immutable::Vector #each_index with a block yields all the valid indices into the vector returns self without a block returns an Enumerator on an empty vector doesn't yield anything on a 1-item vector yields all valid indices on a 2-item vector yields all valid indices on a 10-item vector yields all valid indices on a 31-item vector yields all valid indices on a 32-item vector yields all valid indices on a 33-item vector yields all valid indices on a 1000-item vector yields all valid indices on a 1024-item vector yields all valid indices on a 1025-item vector yields all valid indices Immutable::Vector #each with no block returns an Enumerator on a 31-item vector with a block returns self yields all the items iterates over the items in order on a 32-item vector with a block returns self yields all the items iterates over the items in order on a 33-item vector with a block returns self yields all the items iterates over the items in order on a 1023-item vector with a block returns self yields all the items iterates over the items in order on a 1024-item vector with a block returns self yields all the items iterates over the items in order on a 1025-item vector with a block returns self yields all the items iterates over the items in order on an empty vector doesn't yield anything Immutable::Vector #each_with_index with no block returns an Enumerator on a 1-item vector with a block returns self iterates over the items in order on a 2-item vector with a block returns self iterates over the items in order on a 31-item vector with a block returns self iterates over the items in order on a 32-item vector with a block returns self iterates over the items in order on a 33-item vector with a block returns self iterates over the items in order on a 1023-item vector with a block returns self iterates over the items in order on a 1024-item vector with a block returns self iterates over the items in order on a 1025-item vector with a block returns self iterates over the items in order on an empty vector doesn't yield anything Immutable::Vector #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false .empty returns the canonical empty vector from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Hash Immutable::Vector #eql returns false when comparing with an array with the same contents returns false when comparing with an arbitrary object returns false when comparing an empty vector with an empty array returns false when comparing with a subclass of Immutable::Vector #== returns true when comparing with an array with the same contents returns false when comparing with an arbitrary object returns true when comparing an empty vector with an empty array returns true when comparing with a subclass of Immutable::Vector works on larger vectors #eql? returns true for vectors [] and [] for vectors [] and [] returns false for vectors [] and [nil] for vectors [nil] and [] returns false for vectors ["A"] and [] for vectors [] and ["A"] returns true for vectors ["A"] and ["A"] for vectors ["A"] and ["A"] returns false for vectors ["A"] and ["B"] for vectors ["B"] and ["A"] returns false for vectors ["A", "B"] and ["A"] for vectors ["A"] and ["A", "B"] returns true for vectors ["A", "B", "C"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["A", "B", "C"] returns false for vectors ["C", "A", "B"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["C", "A", "B"] #== returns true for vectors [] and [] for vectors [] and [] returns false for vectors [] and [nil] for vectors [nil] and [] returns false for vectors ["A"] and [] for vectors [] and ["A"] returns true for vectors ["A"] and ["A"] for vectors ["A"] and ["A"] returns false for vectors ["A"] and ["B"] for vectors ["B"] and ["A"] returns false for vectors ["A", "B"] and ["A"] for vectors ["A"] and ["A", "B"] returns true for vectors ["A", "B", "C"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["A", "B", "C"] returns false for vectors ["C", "A", "B"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["C", "A", "B"] Immutable::Vector #fetch gives precedence to default block over default argument if passed both with no default provided when the index exists returns the value at the index when the key does not exist raises an IndexError with a default value when the index exists returns the value at the index when the index does not exist returns the default value with a default block when the index exists returns the value at the index when the index does not exist invokes the block with the missing index as parameter Immutable::Vector #fill can replace a range of items at the beginning of a vector can replace a range of items in the middle of a vector can replace a range of items at the end of a vector can replace all the items in a vector can fill past the end of the vector behaves like Array#fill, on a variety of inputs with 1 argument replaces all the items in the vector by default with 2 arguments replaces up to the end of the vector by default when index and length are 0 leaves the vector unmodified when expanding a vector past boundary where vector trie needs to deepen works the same on a 1000-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same on a 2000-item vector works the same Immutable::Vector #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" on 1..32 returns 1 Immutable::Vector #flat_map with an empty vector returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a block that returns an empty vector returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a vector of one item returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a vector of multiple items returns the flattened values as an Immutable::Vector returns an Immutable::Vector Immutable::Vector #flatten recursively flattens nested vectors into containing vector flattens nested arrays as well leaves the original unmodified with an integral argument only flattens down to the specified depth with an argument of zero returns self on a subclass returns an instance of the subclass on a vector with no nested vectors returns an unchanged vector on a Vector larger than 32 items initialized with Vector.new returns an unchanged vector Immutable::Vector #get when empty always returns nil when not empty with a positive index within the absolute bounds of the vector returns the value at the specified index from the head outside the absolute bounds of the vector returns nil with a negative index within the absolute bounds of the vector returns the value at the specified index from the tail outside the absolute bounds of the vector returns nil on a 1-item vector works correctly, even after various addings and removings on a 10-item vector works correctly, even after various addings and removings on a 31-item vector works correctly, even after various addings and removings on a 32-item vector works correctly, even after various addings and removings on a 33-item vector works correctly, even after various addings and removings on a 1024-item vector works correctly, even after various addings and removings on a 1025-item vector works correctly, even after various addings and removings on a 2000-item vector works correctly, even after various addings and removings #at when empty always returns nil when not empty with a positive index within the absolute bounds of the vector returns the value at the specified index from the head outside the absolute bounds of the vector returns nil with a negative index within the absolute bounds of the vector returns the value at the specified index from the tail outside the absolute bounds of the vector returns nil on a 1-item vector works correctly, even after various addings and removings on a 10-item vector works correctly, even after various addings and removings on a 31-item vector works correctly, even after various addings and removings on a 32-item vector works correctly, even after various addings and removings on a 33-item vector works correctly, even after various addings and removings on a 1024-item vector works correctly, even after various addings and removings on a 1025-item vector works correctly, even after various addings and removings on a 2000-item vector works correctly, even after various addings and removings Immutable::Vector #group_by returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Vector[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Vector[1, 3], false=>Immutable::Vector[2, 4]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Vector[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Vector[1], 2=>Immutable::Vector[2], 3=>Immutable::Vector[3], 4=>Immutable::Vector[4]}] on an empty vector returns an empty hash from a subclass returns an Hash whose values are instances of the subclass Immutable::Vector #include? on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on ["A", "B", false] returns true on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true #member? on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on ["A", "B", false] returns true on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true Immutable::Vector #insert can add items at the beginning of a vector can add items in the middle of a vector can add items at the end of a vector can add items past the end of a vector accepts a negative index, which counts back from the end of the vector raises IndexError if a negative index is too great works when adding an item past boundary when vector trie needs to deepen works when adding to an empty Vector has the right size and contents after many insertions Immutable::Vector #inspect with an empty array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector with a single item array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector with a multi-item array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector from a subclass returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector Immutable::Vector #join with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) on ["A", "B", "C"] returns "A**B**C" Immutable::Vector #last with an empty vector returns the last item with a single item vector returns the last item with a multi-item vector returns the last item with a 31-item vector returns the last item with a 32-item vector returns the last item with a 33-item vector returns the last item with a 1023-item vector returns the last item with a 1024-item vector returns the last item with a 1025-item vector returns the last item Immutable::Vector #length with an empty vector returns the values with a single item vector returns the values with a multi-item vector returns the values with a 31-item vector returns the values with a 32-item vector returns the values with a 33-item vector returns the values with a 1023-item vector returns the values with a 1024-item vector returns the values with a 1025-item vector returns the values Immutable::Vector #<< with a empty array adding a single item preserves the original ltlts the item to the vector with a single-item array adding a different item preserves the original ltlts the item to the vector with a single-item array adding a duplicate item preserves the original ltlts the item to the vector with a 31-item vector adding a different item preserves the original ltlts the item to the vector with a 32-item vector adding a different item preserves the original ltlts the item to the vector with a 33-item vector adding a different item preserves the original ltlts the item to the vector with a 1023-item vector adding a different item preserves the original ltlts the item to the vector with a 1024-item vector adding a different item preserves the original ltlts the item to the vector with a 1025-item vector adding a different item preserves the original ltlts the item to the vector from a subclass returns an instance of the subclass Immutable::Vector #map when empty returns self when not empty with a block preserves the original values returns a new vector with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass on a large vector works #collect when empty returns self when not empty with a block preserves the original values returns a new vector with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass on a large vector works Immutable::Vector #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by index after loading Immutable::Vector #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::Vector #min with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::Vector #* raises a TypeError if passed nil raises an ArgumentError if passed no arguments with a String argument acts just like #join with an Integer argument concatenates n copies of the array raises an ArgumentError if integer is negative works on large vectors with a subclass of Vector returns an instance of the subclass Immutable::Vector .new accepts a single enumerable argument and creates a new vector makes a defensive copy of a non-frozen mutable Array passed in is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new vector Immutable::Vector #partition on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::Vector #permutation handles duplicate elements correctly leaves the original unmodified behaves like Array#permutation without a block or arguments returns an Enumerator of all permutations without a block, but with integral argument returns an Enumerator of all permutations of given length with a block returns self and no argument yields all permutations and an integral argument yields all permutations of the given length on an empty vector yields the empty permutation with an argument of zero yields the empty permutation with a length greater than the size of the vector yields no permutations Immutable::Vector #pop on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["A", "B"] on 1..32 preserves the original returns 1..31 on 1..33 preserves the original returns 1..32 Immutable::Vector #product when passed no arguments multiplies all items in vector when passed one or more vectors when passed a block yields an array for each combination of items from the vectors returns self when not passed a block returns the cartesian product in an array when one of the arguments is empty returns an empty array when the receiver is empty returns an empty array when passed one or more Arrays also calculates the cartesian product correctly Immutable::Vector #reduce on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::Vector #reject works with a variety of inputs on [] with a block returns [] without a block returns an Enumerator on ["A"] with a block returns ["A"] without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] without a block returns an Enumerator #delete_if works with a variety of inputs on [] with a block returns [] without a block returns an Enumerator on ["A"] with a block returns ["A"] without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] without a block returns an Enumerator Immutable::Vector #repeated_combination leaves the original unmodified behaves like Array#repeated_combination with no block returns an Enumerator with a block returns self with a negative argument yields nothing and returns self with a zero argument yields an empty array with a argument of 1 yields each item in the vector, as single-item vectors on an empty vector, with an argument greater than zero yields nothing with a positive argument, greater than 1 yields all combinations of the given size (where a single element can appear more than once in a row) Immutable::Vector #repeated_permutation handles duplicate elements correctly allows permutations larger than the number of elements leaves the original unmodified behaves like Array#repeated_permutation without a block and without argument returns an Enumerator of all repeated permutations with an integral argument returns an Enumerator of all repeated permutations of the given length with a block returns self on an empty vector yields the empty permutation with an argument of zero yields the empty permutation with no argument yields all repeated permutations with a positive integral argument yields all repeated permutations of the given length Immutable::Vector #reverse_each on a 2-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 31-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 32-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 33-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1000-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1024-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1025-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 2000-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator Immutable::Vector #reverse on [] returns [] on [1] returns [1] on [1, 2] returns [2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] returns [32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33] returns [33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100] returns [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024] returns [1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1014, 1013, 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, 979, 978, 977, 976, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905, 904, 903, 902, 901, 900, 899, 898, 897, 896, 895, 894, 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 879, 878, 877, 876, 875, 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, 857, 856, 855, 854, 853, 852, 851, 850, 849, 848, 847, 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, 833, 832, 831, 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] Immutable::Vector #rindex when passed an object present in the vector returns the last index where the object is present when passed an object not present in the vector returns nil with a block returns the last index of an object which the predicate is true for without an argument OR block returns an Enumerator Immutable::Vector #rotate leaves the original unmodified when passed no argument returns a new vector with the first element moved to the end with an integral argument n returns a new vector with the first (n % size) elements moved to the end with a floating-point argument n coerces the argument to integer using to_int with a non-numeric argument raises a TypeError with an argument of zero returns self with an argument equal to the vector's size returns self on a 31-item vector behaves like Array#rotate on a 32-item vector behaves like Array#rotate on a 33-item vector behaves like Array#rotate on a 1000-item vector behaves like Array#rotate on a 1023-item vector behaves like Array#rotate on a 1024-item vector behaves like Array#rotate on a 1025-item vector behaves like Array#rotate from a subclass returns an instance of the subclass Immutable::Vector #sample returns a randomly chosen item Immutable::Vector #select works with a variety of inputs with a block preserves the original returns a vector with the matching values with no block returns an Enumerator when nothing matches preserves the original returns an empty vector on an empty vector returns self from a subclass returns an instance of the subclass #find_all works with a variety of inputs with a block preserves the original returns a vector with the matching values with no block returns an Enumerator when nothing matches preserves the original returns an empty vector on an empty vector returns self from a subclass returns an instance of the subclass Immutable::Vector #set when empty WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:11:in `block (4 levels) in '. raises an error for index -1 allows indexes 0 and 1 to be set when not empty with a block and a positive index within the absolute bounds of the vector passes the current value to the block replaces the value with the result of the block supports to_proc methods just past the end of the vector passes nil to the block and adds a new value further outside the bounds of the vector passes nil to the block, fills up missing nils, and adds a new value and a negative index within the absolute bounds of the vector passes the current value to the block replaces the value with the result of the block supports to_proc methods outside the absolute bounds of the vector WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:75:in `block (7 levels) in '. raises an error with a value and a positive index within the absolute bounds of the vector preserves the original sets the new value at the specified index just past the end of the vector adds a new value outside the absolute bounds of the vector fills up with nils with a negative index preserves the original sets the new value at the specified index outside the absolute bounds of the vector WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:125:in `block (6 levels) in '. raises an error from a subclass returns an instance of the subclass on a 10-item vector works correctly on a 31-item vector works correctly on a 32-item vector works correctly on a 33-item vector works correctly on a 1000-item vector works correctly on a 1023-item vector works correctly on a 1024-item vector works correctly on a 1025-item vector works correctly on a 2000-item vector works correctly with an identical value to an existing item on a 1-item vector returns self on a 2-item vector returns self on a 5-item vector returns self on a 31-item vector returns self on a 32-item vector returns self on a 33-item vector returns self on a 100-item vector returns self on a 200-item vector returns self Immutable::Vector #shift on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on 1..31 preserves the original returns 2..31 on 1..32 preserves the original returns 2..32 on 1..33 preserves the original returns 2..33 Immutable::Vector #shuffle returns the same values, in a usually different order leaves the original unchanged from a subclass returns an instance of the subclass on a 32-item vector works correctly on a 33-item vector works correctly on a 1023-item vector works correctly on a 1024-item vector works correctly on a 1025-item vector works correctly Immutable::Vector #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the vector when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range on a subclass of Vector with index and count or a range, returns an instance of the subclass #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the vector when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range on a subclass of Vector with index and count or a range, returns an instance of the subclass Immutable::Vector #sort on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] on a 10-item vector behaves like Arraysort on a 31-item vector behaves like Arraysort on a 32-item vector behaves like Arraysort on a 33-item vector behaves like Arraysort on a 1023-item vector behaves like Arraysort on a 1024-item vector behaves like Arraysort on a 1025-item vector behaves like Arraysort #sort_by on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] on a 10-item vector behaves like Arraysort_by on a 31-item vector behaves like Arraysort_by on a 32-item vector behaves like Arraysort_by on a 33-item vector behaves like Arraysort_by on a 1023-item vector behaves like Arraysort_by on a 1024-item vector behaves like Arraysort_by on a 1025-item vector behaves like Arraysort_by Immutable::Vector #sum on [] returns 0 on [2] returns 2 on [1, 3, 5, 7, 11] returns 27 Immutable::Vector #take 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] 1 from 1..32 preserves the original returns [1] 32 from 1..33 preserves the original returns 1..32 40 from 1..100 preserves the original returns 1..40 when number of elements specified is identical to size returns self when number of elements specified is bigger than size returns self Immutable::Vector #take_while on [] with a block returns [] preserves the original without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original without a block returns an Enumerator Immutable::Vector #to_a with an empty vector returns the values with an single item vector returns the values with an multi-item vector returns the values with a 10-item vector returns the values with a 31-item vector returns the values with a 32-item vector returns the values with a 33-item vector returns the values with a 1000-item vector returns the values with a 1023-item vector returns the values with a 1024-item vector returns the values with a 1025-item vector returns the values Immutable::Vector #to_ary converts using block parameters converts using method arguments converts using splat Immutable::Vector #to_list on [] returns a list the returned list has the correct length contains all values on ["A"] returns a list the returned list has the correct length contains all values on ["A", "B", "C"] returns a list the returned list has the correct length contains all values Immutable::Vector #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values on 1..10 returns a set with the same values on 1..32 returns a set with the same values on 1..33 returns a set with the same values on 1..1000 returns a set with the same values Immutable::Vector #transpose takes a vector of vectors and transposes rows and columns raises an IndexError if the vectors are not of the same length also works on Vectors of Arrays on 10-item vectors behaves like Array#transpose on 31-item vectors behaves like Array#transpose on 32-item vectors behaves like Array#transpose on 33-item vectors behaves like Array#transpose on 1000-item vectors behaves like Array#transpose on 1023-item vectors behaves like Array#transpose on 1024-item vectors behaves like Array#transpose on 1025-item vectors behaves like Array#transpose on 2000-item vectors behaves like Array#transpose on a subclass of Vector returns instances of the subclass if an item does not respond to #size and #[] raises TypeError Immutable::Vector #uniq returns a vector with no duplicates leaves the original unmodified uses #eql? semantics also uses #hash when determining which values are duplicates keeps the first of each group of duplicate values when passed a block uses the return value of the block to determine which items are duplicate on a vector with no duplicates returns an unchanged vector if the vector has more than 32 elements and is initialized with Vector.new returns an unchanged vector on a 10-item vector behaves like Array#uniq on a 31-item vector behaves like Array#uniq on a 32-item vector behaves like Array#uniq on a 33-item vector behaves like Array#uniq on a 1000-item vector behaves like Array#uniq on a 1023-item vector behaves like Array#uniq on a 1024-item vector behaves like Array#uniq on a 1025-item vector behaves like Array#uniq on a 2000-item vector behaves like Array#uniq from a subclass returns an instance of the subclass Immutable::Vector #unshift on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] on 1..31 with 0 preserves the original returns 0..31 on 1..32 with 0 preserves the original returns 0..32 on 1..33 with 0 preserves the original returns 0..33 Immutable::Vector #update_in with one level on existing key passes the value to the block replaces the value with the result of the block should preserve the original with multi-level vectors on existing keys passes the value to the block replaces the value with the result of the block should preserve the original with multi-level creating sub-hashes when keys don't exist passes nil to the block creates subhashes on the way to set the value with multi-level including hash with existing keys passes the value to the block replaces the value with the result of the block should preserve the original with empty key_path raises ArguemntError Immutable::Vector #values_at accepts any number of indices, and returns a vector of items at those indices when passed invalid indices fills in with nils when passed no arguments returns an empty vector from a subclass returns an instance of the subclass Immutable::Vector #zip with a block yields arrays of one corresponding element from each input sequence fills in the missing values with nils returns nil can handle multiple inputs, of different classes without a block returns a vector of arrays (one corresponding element from each input sequence) on 10-item vectors behaves like Array#zip on 31-item vectors behaves like Array#zip on 32-item vectors behaves like Array#zip on 33-item vectors behaves like Array#zip on 1000-item vectors behaves like Array#zip on 1023-item vectors behaves like Array#zip on 1024-item vectors behaves like Array#zip on 1025-item vectors behaves like Array#zip from a subclass returns an instance of the subclass Immutable Hash can be loaded separately Set can be loaded separately Vector can be loaded separately List can be loaded separately SortedSet can be loaded separately Deque can be loaded separately Top 10 slowest examples (3.23 seconds, 31.0% of total time): Immutable::List#each_chunk on a really big list doesn't run out of stack 0.60002 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List#partition calls the passed block only once for each item, even with multiple threads 0.47634 seconds ./spec/lib/immutable/list/partition_spec.rb:38 Immutable::List#each_slice on a really big list doesn't run out of stack 0.41894 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List ensures each node of a lazy list will only be realized on ONE thread, even when accessed by multiple threads 0.35447 seconds ./spec/lib/immutable/list/multithreading_spec.rb:5 Immutable::Set#marshal_dump/#marshal_load is still possible to test items by key after loading 0.32587 seconds ./spec/lib/immutable/set/marshal_spec.rb:23 Immutable::List#hash on a really big list doesn't run out of stack 0.31016 seconds ./spec/lib/immutable/list/hash_spec.rb:6 Immutable::Hash#length has the correct size after lots of addings and removings 0.19527 seconds ./spec/lib/immutable/hash/size_spec.rb:38 Immutable::List#eql? on a really big list doesn't run out of stack 0.18929 seconds ./spec/lib/immutable/list/eql_spec.rb:6 Immutable::List#all? on a really big list doesn't run out of stack 0.18642 seconds ./spec/lib/immutable/list/all_spec.rb:8 Immutable::Deque#marshal_dump/#marshal_load can survive dumping and loading into a new process 0.1756 seconds ./spec/lib/immutable/deque/marshal_spec.rb:20 Top 10 slowest example groups: Immutable::Set 0.24602 seconds average (0.49203 seconds / 2 examples) ./spec/lib/immutable/set/marshal_spec.rb:3 Immutable::Deque 0.17167 seconds average (0.34335 seconds / 2 examples) ./spec/lib/immutable/deque/marshal_spec.rb:3 Immutable::Vector 0.16939 seconds average (0.33878 seconds / 2 examples) ./spec/lib/immutable/vector/marshal_spec.rb:3 Immutable::Hash 0.1687 seconds average (0.33739 seconds / 2 examples) ./spec/lib/immutable/hash/marshal_spec.rb:3 Immutable::List 0.157 seconds average (0.471 seconds / 3 examples) ./spec/lib/immutable/list/multithreading_spec.rb:4 Immutable 0.11384 seconds average (0.68301 seconds / 6 examples) ./spec/lib/load_spec.rb:6 Immutable::SortedSet 0.1105 seconds average (0.33149 seconds / 3 examples) ./spec/lib/immutable/sorted_set/marshal_spec.rb:3 Immutable::List 0.10542 seconds average (0.31626 seconds / 3 examples) ./spec/lib/immutable/list/hash_spec.rb:3 Immutable::Hash 0.0551 seconds average (0.55098 seconds / 10 examples) ./spec/lib/immutable/hash/size_spec.rb:3 Immutable::List 0.03224 seconds average (1.03 seconds / 32 examples) ./spec/lib/immutable/list/each_slice_spec.rb:3 Finished in 10.43 seconds (files took 5.3 seconds to load) 4608 examples, 0 failures ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ └──────────────────────────────────────────────────────────────────────────────┘ dh_installdocs -O--buildsystem=ruby dh_ruby_fixdocs -O--buildsystem=ruby dh_installchangelogs -O--buildsystem=ruby dh_installsystemduser -O--buildsystem=ruby dh_perl -O--buildsystem=ruby dh_link -O--buildsystem=ruby dh_strip_nondeterminism -O--buildsystem=ruby dh_compress -X.rb -O--buildsystem=ruby dh_fixperms -O--buildsystem=ruby dh_missing -O--buildsystem=ruby dh_ruby_fixdepends -O--buildsystem=ruby dh_installdeb -O--buildsystem=ruby dh_gencontrol -O--buildsystem=ruby dpkg-gencontrol: warning: Depends field of package ruby-immutable-ruby: substitution variable ${shlibs:Depends} used, but is not defined dh_md5sums -O--buildsystem=ruby dh_builddeb -O--buildsystem=ruby dpkg-deb: building package 'ruby-immutable-ruby' in '../ruby-immutable-ruby_0.1.0-2_all.deb'. dpkg-genbuildinfo --build=binary -O../ruby-immutable-ruby_0.1.0-2_amd64.buildinfo dpkg-genchanges --build=binary -O../ruby-immutable-ruby_0.1.0-2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/1057230 and its subdirectories I: Current time: Sun Dec 28 20:37:48 -12 2025 I: pbuilder-time-stamp: 1766997468 Mon Dec 29 08:37:48 UTC 2025 I: Signing ./b1/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo as ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc Mon Dec 29 08:37:48 UTC 2025 I: Signed ./b1/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo as ./b1/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc Mon Dec 29 08:37:48 UTC 2025 - build #1 for ruby-immutable-ruby/unstable/amd64 on ionos5-amd64 done. Starting cleanup. All cleanup done. Mon Dec 29 08:37:48 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-oIHwfR94, removing. /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ: total 16 drwxr-xr-x 2 jenkins jenkins 4096 Nov 26 02:14 b1 drwxr-xr-x 2 jenkins jenkins 4096 Nov 26 02:11 b2 -rw------- 1 jenkins jenkins 3345 Nov 26 02:11 rbuildlog.ubRrX3O -rw-r--r-- 1 jenkins jenkins 2161 Sep 17 2023 ruby-immutable-ruby_0.1.0-2.dsc /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b1: total 448 -rw-r--r-- 1 jenkins jenkins 365947 Nov 26 02:14 build.log -rw-r--r-- 1 jenkins jenkins 2840 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2161 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2.dsc -rw-r--r-- 1 jenkins jenkins 46248 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_all.deb -rw-r--r-- 1 jenkins jenkins 8598 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 9480 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1142 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_amd64.changes -rw-r--r-- 1 jenkins jenkins 1301 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_source.changes /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b2: total 0 Tue Nov 26 02:14:49 UTC 2024 I: Deleting $TMPDIR on ionos5-amd64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Sun Dec 28 20:34:39 -12 2025 I: pbuilder-time-stamp: 1766997279 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [ruby-immutable-ruby_0.1.0-2.dsc] I: copying [./ruby-immutable-ruby_0.1.0.orig.tar.gz] I: copying [./ruby-immutable-ruby_0.1.0-2.debian.tar.xz] I: Extracting source gpgv: Signature made Sun Sep 17 20:14:42 2023 gpgv: using RSA key 4D0BE12F0E4776D8AACE9696E66C775AEBFE6C7D gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./ruby-immutable-ruby_0.1.0-2.dsc: no acceptable signature found dpkg-source: info: extracting ruby-immutable-ruby in ruby-immutable-ruby-0.1.0 dpkg-source: info: unpacking ruby-immutable-ruby_0.1.0.orig.tar.gz dpkg-source: info: unpacking ruby-immutable-ruby_0.1.0-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying no-pry-in-specs.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1057230/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='888831b324c64179aebffbd32d0c7599' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='1057230' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/pbuilderrc_GNHn --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b1 --logfile b1/build.log ruby-immutable-ruby_0.1.0-2.dsc' SUDO_GID='110' SUDO_UID='105' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://213.165.73.152:3128' I: uname -a Linux ionos5-amd64 6.11.5+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.5-1~bpo12+1 (2024-11-11) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/1057230/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), gem2deb (>= 1), ruby-concurrent (>= 1.1), ruby-rspec, ruby-sorted-set (>= 1.0) dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19965 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on gem2deb (>= 1); however: Package gem2deb is not installed. pbuilder-satisfydepends-dummy depends on ruby-concurrent (>= 1.1); however: Package ruby-concurrent is not installed. pbuilder-satisfydepends-dummy depends on ruby-rspec; however: Package ruby-rspec is not installed. pbuilder-satisfydepends-dummy depends on ruby-sorted-set (>= 1.0); however: Package ruby-sorted-set is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} debhelper{a} devscripts{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dirmngr{a} dwz{a} file{a} gem2deb{a} gem2deb-test-runner{a} gettext{a} gettext-base{a} gnupg{a} gnupg-l10n{a} gpg{a} gpg-agent{a} gpgconf{a} gpgsm{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libassuan9{a} libb-hooks-op-check-perl{a} libclass-method-modifiers-perl{a} libclass-xsaccessor-perl{a} libclone-perl{a} libcom-err2{a} libdebhelper-perl{a} libdevel-callchecker-perl{a} libdynaloader-functions-perl{a} libedit2{a} libelf1t64{a} libencode-locale-perl{a} libexpat1{a} libfile-dirlist-perl{a} libfile-homedir-perl{a} libfile-listing-perl{a} libfile-stripnondeterminism-perl{a} libfile-touch-perl{a} libfile-which-perl{a} libgmp-dev{a} libgmpxx4ldbl{a} libgssapi-krb5-2{a} libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a} libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libicu72{a} libimport-into-perl{a} libio-html-perl{a} libio-pty-perl{a} libio-socket-ssl-perl{a} libipc-run-perl{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libksba8{a} libldap-2.5-0{a} liblwp-mediatypes-perl{a} liblwp-protocol-https-perl{a} libmagic-mgc{a} libmagic1t64{a} libmodule-runtime-perl{a} libmoo-perl{a} libncurses6{a} libnet-http-perl{a} libnet-ssleay-perl{a} libnpth0t64{a} libnsl2{a} libparams-classify-perl{a} libpipeline1{a} libpython3-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libreadline8t64{a} librole-tiny-perl{a} libruby{a} libruby3.1t64{a} libsasl2-2{a} libsasl2-modules-db{a} libsub-quote-perl{a} libtimedate-perl{a} libtirpc-common{a} libtirpc3t64{a} libtool{a} libtry-tiny-perl{a} libuchardet0{a} liburi-perl{a} libwww-perl{a} libwww-robotrules-perl{a} libxml2{a} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} openssl{a} patchutils{a} perl-openssl-defaults{a} pinentry-curses{a} po-debconf{a} python3{a} python3-minimal{a} python3.12{a} python3.12-minimal{a} rake{a} readline-common{a} ruby{a} ruby-all-dev{a} ruby-concurrent{a} ruby-diff-lcs{a} ruby-net-telnet{a} ruby-rbtree{a} ruby-rspec{a} ruby-rspec-core{a} ruby-rspec-expectations{a} ruby-rspec-mocks{a} ruby-rspec-support{a} ruby-rubygems{a} ruby-sdbm{a} ruby-sorted-set{a} ruby-webrick{a} ruby-xmlrpc{a} ruby3.1{a} ruby3.1-dev{a} rubygems-integration{a} sensible-utils{a} tzdata{a} wdiff{a} The following packages are RECOMMENDED but will NOT be installed: apt-file curl dctrl-tools debian-keyring dput dput-ng dupload equivs fonts-lato gnupg-utils gpg-wks-client krb5-locales libarchive-cpio-perl libdata-dump-perl libdistro-info-perl libgit-wrapper-perl libgitlab-api-v4-perl libgpm2 libhtml-form-perl libhtml-format-perl libhttp-daemon-perl libio-compress-brotli-perl libjs-jquery libjson-perl libldap-common liblist-compare-perl libltdl-dev libmail-sendmail-perl libmailtools-perl libnamespace-clean-perl libsasl2-modules libsoap-lite-perl libstring-shellquote-perl libxstring-perl licensecheck lintian lynx pristine-tar python3-apt python3-debian python3-magic python3-requests python3-unidiff python3-xdg ruby3.1-doc strace unzip wget zip 0 packages upgraded, 138 newly installed, 0 to remove and 0 not upgraded. Need to get 44.4 MB of archives. After unpacking 166 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.12-minimal amd64 3.12.7-3 [815 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.12-minimal amd64 3.12.7-3 [2162 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.12.7-1 [26.8 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2024b-3 [255 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-3 [32.5 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.1-1+b1 [23.2 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-3 [79.9 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 12 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-3 [324 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-3 [136 kB] Get: 14 http://deb.debian.org/debian unstable/main amd64 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 libtirpc3t64 amd64 1.3.4+ds-1.3+b1 [83.1 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 libnsl2 amd64 1.3.0-3+b3 [40.6 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-5 [69.3 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-5 [169 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 libpython3.12-stdlib amd64 3.12.7-3 [1966 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 python3.12 amd64 3.12.7-3 [671 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.12.7-1 [9712 B] Get: 22 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.12.7-1 [27.8 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.3.2-2 [1382 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20240203 [158 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.22.5-2 [200 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-5 [1181 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.2-11 [91.5 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-4 [287 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.22.5-2 [723 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.20 [89.7 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libtool all 2.4.7-8 [517 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 46 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-5+b1 [9423 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.22.5-2 [1601 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.20 [915 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libassuan9 amd64 3.0.1-2 [60.6 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 gpgconf amd64 2.2.45-2 [120 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libksba8 amd64 1.6.7-2+b1 [136 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-8 [19.6 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-8 [57.3 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 libldap-2.5-0 amd64 2.5.18+dfsg-3+b1 [188 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 libnpth0t64 amd64 1.6-3.1+b1 [18.2 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 dirmngr amd64 2.2.45-2 [368 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 gnupg-l10n all 2.2.45-2 [705 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 gpg amd64 2.2.45-2 [531 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 pinentry-curses amd64 1.2.1-4+b1 [79.7 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 gpg-agent amd64 2.2.45-2 [251 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 gpgsm amd64 2.2.45-2 [255 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 gnupg all 2.2.45-2 [376 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 libfile-dirlist-perl all 0.05-3 [7600 B] Get: 69 http://deb.debian.org/debian unstable/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libfile-touch-perl all 0.12-2 [8816 B] Get: 72 http://deb.debian.org/debian unstable/main amd64 libio-pty-perl amd64 1:1.20-1+b2 [34.3 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libipc-run-perl all 20231003.0-2 [101 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libclass-method-modifiers-perl all 2.15-1 [18.0 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 libclass-xsaccessor-perl amd64 1.19-4+b4 [36.1 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libb-hooks-op-check-perl amd64 0.22-3+b2 [10.6 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libdynaloader-functions-perl all 0.004-1 [12.1 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libdevel-callchecker-perl amd64 0.009-1+b1 [16.2 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libparams-classify-perl amd64 0.015-2+b4 [22.5 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libmodule-runtime-perl all 0.016-2 [19.6 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libimport-into-perl all 1.002005-2 [11.3 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 librole-tiny-perl all 2.002004-1 [21.4 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libsub-quote-perl all 2.006008-1 [21.8 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libmoo-perl all 2.005005-1 [58.0 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 libencode-locale-perl all 1.05-3 [12.9 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libhttp-date-perl all 6.06-1 [10.7 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 libfile-listing-perl all 6.16-1 [12.4 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 libhtml-tagset-perl all 3.24-1 [14.7 kB] Get: 90 http://deb.debian.org/debian unstable/main amd64 liburi-perl all 5.30-1 [105 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 libhtml-parser-perl amd64 3.83-1+b1 [99.7 kB] Get: 92 http://deb.debian.org/debian unstable/main amd64 libhtml-tree-perl all 5.07-3 [211 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libclone-perl amd64 0.47-1+b1 [13.9 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libio-html-perl all 1.004-3 [16.2 kB] Get: 95 http://deb.debian.org/debian unstable/main amd64 liblwp-mediatypes-perl all 6.04-2 [20.2 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libhttp-message-perl all 7.00-2 [79.8 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libhttp-cookies-perl all 6.11-1 [19.1 kB] Get: 98 http://deb.debian.org/debian unstable/main amd64 libhttp-negotiate-perl all 6.01-2 [13.1 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 perl-openssl-defaults amd64 7+b2 [6724 B] Get: 100 http://deb.debian.org/debian unstable/main amd64 libnet-ssleay-perl amd64 1.94-2 [339 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 libio-socket-ssl-perl all 2.089-1 [223 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 libnet-http-perl all 6.23-1 [23.9 kB] Get: 103 http://deb.debian.org/debian unstable/main amd64 liblwp-protocol-https-perl all 6.14-1 [10.8 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libtry-tiny-perl all 0.32-1 [22.9 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libwww-robotrules-perl all 6.02-1 [12.9 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libwww-perl all 6.77-1 [183 kB] Get: 107 http://deb.debian.org/debian unstable/main amd64 patchutils amd64 0.4.2-1 [77.5 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 wdiff amd64 1.2.2-6 [119 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 devscripts all 2.24.4 [1080 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 rubygems-integration all 1.18 [6704 B] Get: 111 http://deb.debian.org/debian unstable/main amd64 ruby-net-telnet all 0.2.0-1 [13.1 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 ruby-webrick all 1.8.1-1 [51.4 kB] Get: 113 http://deb.debian.org/debian unstable/main amd64 ruby-xmlrpc all 0.3.3-2 [24.4 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 libruby amd64 1:3.1+nmu1 [4664 B] Get: 115 http://deb.debian.org/debian unstable/main amd64 ruby-sdbm amd64 1.0.0-5+b5 [15.6 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20240808-1 [93.9 kB] Get: 117 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5-2+b1 [105 kB] Get: 118 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-1+b2 [52.7 kB] Get: 119 http://deb.debian.org/debian unstable/main amd64 libruby3.1t64 amd64 3.1.2-8.4 [5411 kB] Get: 120 http://deb.debian.org/debian unstable/main amd64 ruby3.1 amd64 3.1.2-8.4 [664 kB] Get: 121 http://deb.debian.org/debian unstable/main amd64 ruby-rubygems all 3.4.20-1 [309 kB] Get: 122 http://deb.debian.org/debian unstable/main amd64 ruby amd64 1:3.1+nmu1 [5584 B] Get: 123 http://deb.debian.org/debian unstable/main amd64 rake all 13.2.1-1 [65.2 kB] Get: 124 http://deb.debian.org/debian unstable/main amd64 gem2deb-test-runner amd64 2.2.5 [17.9 kB] Get: 125 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-2+b2 [329 kB] Get: 126 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-2+b2 [642 kB] Get: 127 http://deb.debian.org/debian unstable/main amd64 ruby3.1-dev amd64 3.1.2-8.4 [1002 kB] Get: 128 http://deb.debian.org/debian unstable/main amd64 ruby-all-dev amd64 1:3.1+nmu1 [5672 B] Get: 129 http://deb.debian.org/debian unstable/main amd64 gem2deb amd64 2.2.5 [48.0 kB] Get: 130 http://deb.debian.org/debian unstable/main amd64 ruby-concurrent all 1.2.3-4 [290 kB] Get: 131 http://deb.debian.org/debian unstable/main amd64 ruby-diff-lcs all 1.5.1-1 [28.1 kB] Get: 132 http://deb.debian.org/debian unstable/main amd64 ruby-rbtree amd64 0.4.6-1+b1 [22.3 kB] Get: 133 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-support all 3.13.0c0e0m0s1-2 [28.5 kB] Get: 134 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-core all 3.13.0c0e0m0s1-2 [164 kB] Get: 135 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 136 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 137 http://deb.debian.org/debian unstable/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 138 http://deb.debian.org/debian unstable/main amd64 ruby-sorted-set all 1.0.3-3 [4736 B] Fetched 44.4 MB in 22s (2007 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.12-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19965 files and directories currently installed.) Preparing to unpack .../libpython3.12-minimal_3.12.7-3_amd64.deb ... Unpacking libpython3.12-minimal:amd64 (3.12.7-3) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../python3.12-minimal_3.12.7-3_amd64.deb ... Unpacking python3.12-minimal (3.12.7-3) ... Setting up libpython3.12-minimal:amd64 (3.12.7-3) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.12-minimal (3.12.7-3) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20285 files and directories currently installed.) Preparing to unpack .../00-python3-minimal_3.12.7-1_amd64.deb ... Unpacking python3-minimal (3.12.7-1) ... Selecting previously unselected package media-types. Preparing to unpack .../01-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../02-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../03-tzdata_2024b-3_all.deb ... Unpacking tzdata (2024b-3) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../04-libkrb5support0_1.21.3-3_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-3) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../05-libcom-err2_1.47.1-1+b1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.1-1+b1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../06-libk5crypto3_1.21.3-3_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-3) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../07-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../08-libkrb5-3_1.21.3-3_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-3) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../09-libgssapi-krb5-2_1.21.3-3_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-3) ... Selecting previously unselected package libtirpc-common. Preparing to unpack .../10-libtirpc-common_1.3.4+ds-1.3_all.deb ... Unpacking libtirpc-common (1.3.4+ds-1.3) ... Selecting previously unselected package libtirpc3t64:amd64. Preparing to unpack .../11-libtirpc3t64_1.3.4+ds-1.3+b1_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3 to /lib/x86_64-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3.0.0 to /lib/x86_64-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' Unpacking libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Selecting previously unselected package libnsl2:amd64. Preparing to unpack .../12-libnsl2_1.3.0-3+b3_amd64.deb ... Unpacking libnsl2:amd64 (1.3.0-3+b3) ... Selecting previously unselected package readline-common. Preparing to unpack .../13-readline-common_8.2-5_all.deb ... Unpacking readline-common (8.2-5) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../14-libreadline8t64_8.2-5_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-5) ... Selecting previously unselected package libpython3.12-stdlib:amd64. Preparing to unpack .../15-libpython3.12-stdlib_3.12.7-3_amd64.deb ... Unpacking libpython3.12-stdlib:amd64 (3.12.7-3) ... Selecting previously unselected package python3.12. Preparing to unpack .../16-python3.12_3.12.7-3_amd64.deb ... Unpacking python3.12 (3.12.7-3) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../17-libpython3-stdlib_3.12.7-1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.12.7-1) ... Setting up python3-minimal (3.12.7-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21347 files and directories currently installed.) Preparing to unpack .../000-python3_3.12.7-1_amd64.deb ... Unpacking python3 (3.12.7-1) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../001-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../002-openssl_3.3.2-2_amd64.deb ... Unpacking openssl (3.3.2-2) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../003-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../004-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../005-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../006-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../007-gettext-base_0.22.5-2_amd64.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../008-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../009-groff-base_1.23.0-5_amd64.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../010-bsdextrautils_2.40.2-11_amd64.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../011-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../012-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../013-m4_1.4.19-4_amd64.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../014-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../015-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../016-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../017-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../018-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../019-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../020-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../021-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../022-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../023-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../024-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../025-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../026-libicu72_72.1-5+b1_amd64.deb ... Unpacking libicu72:amd64 (72.1-5+b1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../027-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../028-gettext_0.22.5-2_amd64.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../029-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../030-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../031-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package libassuan9:amd64. Preparing to unpack .../032-libassuan9_3.0.1-2_amd64.deb ... Unpacking libassuan9:amd64 (3.0.1-2) ... Selecting previously unselected package gpgconf. Preparing to unpack .../033-gpgconf_2.2.45-2_amd64.deb ... Unpacking gpgconf (2.2.45-2) ... Selecting previously unselected package libksba8:amd64. Preparing to unpack .../034-libksba8_1.6.7-2+b1_amd64.deb ... Unpacking libksba8:amd64 (1.6.7-2+b1) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../035-libsasl2-modules-db_2.1.28+dfsg1-8_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-8) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../036-libsasl2-2_2.1.28+dfsg1-8_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-8) ... Selecting previously unselected package libldap-2.5-0:amd64. Preparing to unpack .../037-libldap-2.5-0_2.5.18+dfsg-3+b1_amd64.deb ... Unpacking libldap-2.5-0:amd64 (2.5.18+dfsg-3+b1) ... Selecting previously unselected package libnpth0t64:amd64. Preparing to unpack .../038-libnpth0t64_1.6-3.1+b1_amd64.deb ... Unpacking libnpth0t64:amd64 (1.6-3.1+b1) ... Selecting previously unselected package dirmngr. Preparing to unpack .../039-dirmngr_2.2.45-2_amd64.deb ... Unpacking dirmngr (2.2.45-2) ... Selecting previously unselected package gnupg-l10n. Preparing to unpack .../040-gnupg-l10n_2.2.45-2_all.deb ... Unpacking gnupg-l10n (2.2.45-2) ... Selecting previously unselected package gpg. Preparing to unpack .../041-gpg_2.2.45-2_amd64.deb ... Unpacking gpg (2.2.45-2) ... Selecting previously unselected package pinentry-curses. Preparing to unpack .../042-pinentry-curses_1.2.1-4+b1_amd64.deb ... Unpacking pinentry-curses (1.2.1-4+b1) ... Selecting previously unselected package gpg-agent. Preparing to unpack .../043-gpg-agent_2.2.45-2_amd64.deb ... Unpacking gpg-agent (2.2.45-2) ... Selecting previously unselected package gpgsm. Preparing to unpack .../044-gpgsm_2.2.45-2_amd64.deb ... Unpacking gpgsm (2.2.45-2) ... Selecting previously unselected package gnupg. Preparing to unpack .../045-gnupg_2.2.45-2_all.deb ... Unpacking gnupg (2.2.45-2) ... Selecting previously unselected package libfile-dirlist-perl. Preparing to unpack .../046-libfile-dirlist-perl_0.05-3_all.deb ... Unpacking libfile-dirlist-perl (0.05-3) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../047-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../048-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libfile-touch-perl. Preparing to unpack .../049-libfile-touch-perl_0.12-2_all.deb ... Unpacking libfile-touch-perl (0.12-2) ... Selecting previously unselected package libio-pty-perl. Preparing to unpack .../050-libio-pty-perl_1%3a1.20-1+b2_amd64.deb ... Unpacking libio-pty-perl (1:1.20-1+b2) ... Selecting previously unselected package libipc-run-perl. Preparing to unpack .../051-libipc-run-perl_20231003.0-2_all.deb ... Unpacking libipc-run-perl (20231003.0-2) ... Selecting previously unselected package libclass-method-modifiers-perl. Preparing to unpack .../052-libclass-method-modifiers-perl_2.15-1_all.deb ... Unpacking libclass-method-modifiers-perl (2.15-1) ... Selecting previously unselected package libclass-xsaccessor-perl. Preparing to unpack .../053-libclass-xsaccessor-perl_1.19-4+b4_amd64.deb ... Unpacking libclass-xsaccessor-perl (1.19-4+b4) ... Selecting previously unselected package libb-hooks-op-check-perl:amd64. Preparing to unpack .../054-libb-hooks-op-check-perl_0.22-3+b2_amd64.deb ... Unpacking libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Selecting previously unselected package libdynaloader-functions-perl. Preparing to unpack .../055-libdynaloader-functions-perl_0.004-1_all.deb ... Unpacking libdynaloader-functions-perl (0.004-1) ... Selecting previously unselected package libdevel-callchecker-perl:amd64. Preparing to unpack .../056-libdevel-callchecker-perl_0.009-1+b1_amd64.deb ... Unpacking libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Selecting previously unselected package libparams-classify-perl:amd64. Preparing to unpack .../057-libparams-classify-perl_0.015-2+b4_amd64.deb ... Unpacking libparams-classify-perl:amd64 (0.015-2+b4) ... Selecting previously unselected package libmodule-runtime-perl. Preparing to unpack .../058-libmodule-runtime-perl_0.016-2_all.deb ... Unpacking libmodule-runtime-perl (0.016-2) ... Selecting previously unselected package libimport-into-perl. Preparing to unpack .../059-libimport-into-perl_1.002005-2_all.deb ... Unpacking libimport-into-perl (1.002005-2) ... Selecting previously unselected package librole-tiny-perl. Preparing to unpack .../060-librole-tiny-perl_2.002004-1_all.deb ... Unpacking librole-tiny-perl (2.002004-1) ... Selecting previously unselected package libsub-quote-perl. Preparing to unpack .../061-libsub-quote-perl_2.006008-1_all.deb ... Unpacking libsub-quote-perl (2.006008-1) ... Selecting previously unselected package libmoo-perl. Preparing to unpack .../062-libmoo-perl_2.005005-1_all.deb ... Unpacking libmoo-perl (2.005005-1) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../063-libencode-locale-perl_1.05-3_all.deb ... Unpacking libencode-locale-perl (1.05-3) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../064-libtimedate-perl_2.3300-2_all.deb ... Unpacking libtimedate-perl (2.3300-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../065-libhttp-date-perl_6.06-1_all.deb ... Unpacking libhttp-date-perl (6.06-1) ... Selecting previously unselected package libfile-listing-perl. Preparing to unpack .../066-libfile-listing-perl_6.16-1_all.deb ... Unpacking libfile-listing-perl (6.16-1) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../067-libhtml-tagset-perl_3.24-1_all.deb ... Unpacking libhtml-tagset-perl (3.24-1) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../068-liburi-perl_5.30-1_all.deb ... Unpacking liburi-perl (5.30-1) ... Selecting previously unselected package libhtml-parser-perl:amd64. Preparing to unpack .../069-libhtml-parser-perl_3.83-1+b1_amd64.deb ... Unpacking libhtml-parser-perl:amd64 (3.83-1+b1) ... Selecting previously unselected package libhtml-tree-perl. Preparing to unpack .../070-libhtml-tree-perl_5.07-3_all.deb ... Unpacking libhtml-tree-perl (5.07-3) ... Selecting previously unselected package libclone-perl:amd64. Preparing to unpack .../071-libclone-perl_0.47-1+b1_amd64.deb ... Unpacking libclone-perl:amd64 (0.47-1+b1) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../072-libio-html-perl_1.004-3_all.deb ... Unpacking libio-html-perl (1.004-3) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../073-liblwp-mediatypes-perl_6.04-2_all.deb ... Unpacking liblwp-mediatypes-perl (6.04-2) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../074-libhttp-message-perl_7.00-2_all.deb ... Unpacking libhttp-message-perl (7.00-2) ... Selecting previously unselected package libhttp-cookies-perl. Preparing to unpack .../075-libhttp-cookies-perl_6.11-1_all.deb ... Unpacking libhttp-cookies-perl (6.11-1) ... Selecting previously unselected package libhttp-negotiate-perl. Preparing to unpack .../076-libhttp-negotiate-perl_6.01-2_all.deb ... Unpacking libhttp-negotiate-perl (6.01-2) ... Selecting previously unselected package perl-openssl-defaults:amd64. Preparing to unpack .../077-perl-openssl-defaults_7+b2_amd64.deb ... Unpacking perl-openssl-defaults:amd64 (7+b2) ... Selecting previously unselected package libnet-ssleay-perl:amd64. Preparing to unpack .../078-libnet-ssleay-perl_1.94-2_amd64.deb ... Unpacking libnet-ssleay-perl:amd64 (1.94-2) ... Selecting previously unselected package libio-socket-ssl-perl. Preparing to unpack .../079-libio-socket-ssl-perl_2.089-1_all.deb ... Unpacking libio-socket-ssl-perl (2.089-1) ... Selecting previously unselected package libnet-http-perl. Preparing to unpack .../080-libnet-http-perl_6.23-1_all.deb ... Unpacking libnet-http-perl (6.23-1) ... Selecting previously unselected package liblwp-protocol-https-perl. Preparing to unpack .../081-liblwp-protocol-https-perl_6.14-1_all.deb ... Unpacking liblwp-protocol-https-perl (6.14-1) ... Selecting previously unselected package libtry-tiny-perl. Preparing to unpack .../082-libtry-tiny-perl_0.32-1_all.deb ... Unpacking libtry-tiny-perl (0.32-1) ... Selecting previously unselected package libwww-robotrules-perl. Preparing to unpack .../083-libwww-robotrules-perl_6.02-1_all.deb ... Unpacking libwww-robotrules-perl (6.02-1) ... Selecting previously unselected package libwww-perl. Preparing to unpack .../084-libwww-perl_6.77-1_all.deb ... Unpacking libwww-perl (6.77-1) ... Selecting previously unselected package patchutils. Preparing to unpack .../085-patchutils_0.4.2-1_amd64.deb ... Unpacking patchutils (0.4.2-1) ... Selecting previously unselected package wdiff. Preparing to unpack .../086-wdiff_1.2.2-6_amd64.deb ... Unpacking wdiff (1.2.2-6) ... Selecting previously unselected package devscripts. Preparing to unpack .../087-devscripts_2.24.4_all.deb ... Unpacking devscripts (2.24.4) ... Selecting previously unselected package rubygems-integration. Preparing to unpack .../088-rubygems-integration_1.18_all.deb ... Unpacking rubygems-integration (1.18) ... Selecting previously unselected package ruby-net-telnet. Preparing to unpack .../089-ruby-net-telnet_0.2.0-1_all.deb ... Unpacking ruby-net-telnet (0.2.0-1) ... Selecting previously unselected package ruby-webrick. Preparing to unpack .../090-ruby-webrick_1.8.1-1_all.deb ... Unpacking ruby-webrick (1.8.1-1) ... Selecting previously unselected package ruby-xmlrpc. Preparing to unpack .../091-ruby-xmlrpc_0.3.3-2_all.deb ... Unpacking ruby-xmlrpc (0.3.3-2) ... Selecting previously unselected package libruby:amd64. Preparing to unpack .../092-libruby_1%3a3.1+nmu1_amd64.deb ... Unpacking libruby:amd64 (1:3.1+nmu1) ... Selecting previously unselected package ruby-sdbm:amd64. Preparing to unpack .../093-ruby-sdbm_1.0.0-5+b5_amd64.deb ... Unpacking ruby-sdbm:amd64 (1.0.0-5+b5) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../094-libedit2_3.1-20240808-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20240808-1) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../095-libncurses6_6.5-2+b1_amd64.deb ... Unpacking libncurses6:amd64 (6.5-2+b1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../096-libyaml-0-2_0.2.5-1+b2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-1+b2) ... Selecting previously unselected package libruby3.1t64:amd64. Preparing to unpack .../097-libruby3.1t64_3.1.2-8.4_amd64.deb ... Unpacking libruby3.1t64:amd64 (3.1.2-8.4) ... Selecting previously unselected package ruby3.1. Preparing to unpack .../098-ruby3.1_3.1.2-8.4_amd64.deb ... Unpacking ruby3.1 (3.1.2-8.4) ... Selecting previously unselected package ruby-rubygems. Preparing to unpack .../099-ruby-rubygems_3.4.20-1_all.deb ... Unpacking ruby-rubygems (3.4.20-1) ... Selecting previously unselected package ruby. Preparing to unpack .../100-ruby_1%3a3.1+nmu1_amd64.deb ... Unpacking ruby (1:3.1+nmu1) ... Selecting previously unselected package rake. Preparing to unpack .../101-rake_13.2.1-1_all.deb ... Unpacking rake (13.2.1-1) ... Selecting previously unselected package gem2deb-test-runner. Preparing to unpack .../102-gem2deb-test-runner_2.2.5_amd64.deb ... Unpacking gem2deb-test-runner (2.2.5) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../103-libgmpxx4ldbl_2%3a6.3.0+dfsg-2+b2_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-2+b2) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../104-libgmp-dev_2%3a6.3.0+dfsg-2+b2_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-2+b2) ... Selecting previously unselected package ruby3.1-dev:amd64. Preparing to unpack .../105-ruby3.1-dev_3.1.2-8.4_amd64.deb ... Unpacking ruby3.1-dev:amd64 (3.1.2-8.4) ... Selecting previously unselected package ruby-all-dev:amd64. Preparing to unpack .../106-ruby-all-dev_1%3a3.1+nmu1_amd64.deb ... Unpacking ruby-all-dev:amd64 (1:3.1+nmu1) ... Selecting previously unselected package gem2deb. Preparing to unpack .../107-gem2deb_2.2.5_amd64.deb ... Unpacking gem2deb (2.2.5) ... Selecting previously unselected package ruby-concurrent. Preparing to unpack .../108-ruby-concurrent_1.2.3-4_all.deb ... Unpacking ruby-concurrent (1.2.3-4) ... Selecting previously unselected package ruby-diff-lcs. Preparing to unpack .../109-ruby-diff-lcs_1.5.1-1_all.deb ... Unpacking ruby-diff-lcs (1.5.1-1) ... Selecting previously unselected package ruby-rbtree. Preparing to unpack .../110-ruby-rbtree_0.4.6-1+b1_amd64.deb ... Unpacking ruby-rbtree (0.4.6-1+b1) ... Selecting previously unselected package ruby-rspec-support. Preparing to unpack .../111-ruby-rspec-support_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-support (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-core. Preparing to unpack .../112-ruby-rspec-core_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-core (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-expectations. Preparing to unpack .../113-ruby-rspec-expectations_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-mocks. Preparing to unpack .../114-ruby-rspec-mocks_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec. Preparing to unpack .../115-ruby-rspec_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-sorted-set. Preparing to unpack .../116-ruby-sorted-set_1.0.3-3_all.deb ... Unpacking ruby-sorted-set (1.0.3-3) ... Setting up libksba8:amd64 (1.6.7-2+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up wdiff (1.2.2-6) ... Setting up libfile-which-perl (1.27-2) ... Setting up libnpth0t64:amd64 (1.6-3.1+b1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libicu72:amd64 (72.1-5+b1) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libdynaloader-functions-perl (0.004-1) ... Setting up libclass-method-modifiers-perl (2.15-1) ... Setting up libio-pty-perl (1:1.20-1+b2) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libclone-perl:amd64 (0.47-1+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-1+b2) ... Setting up libtirpc-common (1.3.4+ds-1.3) ... Setting up libhtml-tagset-perl (3.24-1) ... Setting up libdebhelper-perl (13.20) ... Setting up libedit2:amd64 (3.1-20240808-1) ... Setting up liblwp-mediatypes-perl (6.04-2) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libtry-tiny-perl (0.32-1) ... Setting up perl-openssl-defaults:amd64 (7+b2) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libencode-locale-perl (1.05-3) ... Setting up libcom-err2:amd64 (1.47.1-1+b1) ... Setting up file (1:5.45-3+b1) ... Setting up ruby-concurrent (1.2.3-4) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libkrb5support0:amd64 (1.21.3-3) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-8) ... Setting up tzdata (2024b-3) ... Current default time zone: 'Etc/UTC' Local time is now: Mon Dec 29 08:37:05 UTC 2025. Universal Time is now: Mon Dec 29 08:37:05 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-2+b2) ... Setting up gnupg-l10n (2.2.45-2) ... Setting up libncurses6:amd64 (6.5-2+b1) ... Setting up ruby-net-telnet (0.2.0-1) ... Setting up libio-html-perl (1.004-3) ... Setting up autopoint (0.22.5-2) ... Setting up libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Setting up libipc-run-perl (20231003.0-2) ... Setting up libk5crypto3:amd64 (1.21.3-3) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-8) ... Setting up autoconf (2.72-3) ... Setting up ruby-rspec-support (3.13.0c0e0m0s1-2) ... Setting up libtimedate-perl (2.3300-2) ... Setting up ruby-webrick (1.8.1-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libassuan9:amd64 (3.0.1-2) ... Setting up librole-tiny-perl (2.002004-1) ... Setting up netbase (6.4) ... Setting up libsub-quote-perl (2.006008-1) ... Setting up libclass-xsaccessor-perl (1.19-4+b4) ... Setting up libkrb5-3:amd64 (1.21.3-3) ... Setting up libfile-dirlist-perl (0.05-3) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up openssl (3.3.2-2) ... Setting up readline-common (8.2-5) ... Setting up ruby-xmlrpc (0.3.3-2) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up liburi-perl (5.30-1) ... Setting up libfile-touch-perl (0.12-2) ... Setting up libnet-ssleay-perl:amd64 (1.94-2) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up pinentry-curses (1.2.1-4+b1) ... Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up libhttp-date-perl (6.06-1) ... Setting up gettext (0.22.5-2) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-2+b2) ... Setting up libfile-listing-perl (6.16-1) ... Setting up libtool (2.4.7-8) ... Setting up libnet-http-perl (6.23-1) ... Setting up libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Setting up libldap-2.5-0:amd64 (2.5.18+dfsg-3+b1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up patchutils (0.4.2-1) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up libgssapi-krb5-2:amd64 (1.21.3-3) ... Setting up libreadline8t64:amd64 (8.2-5) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up libwww-robotrules-perl (6.02-1) ... Setting up groff-base (1.23.0-5) ... Setting up libhtml-parser-perl:amd64 (3.83-1+b1) ... Setting up gpgconf (2.2.45-2) ... Setting up libio-socket-ssl-perl (2.089-1) ... Setting up gpg (2.2.45-2) ... Setting up libhttp-message-perl (7.00-2) ... Setting up libhttp-negotiate-perl (6.01-2) ... Setting up gpg-agent (2.2.45-2) ... Setting up libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Setting up libhttp-cookies-perl (6.11-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libhtml-tree-perl (5.07-3) ... Setting up libparams-classify-perl:amd64 (0.015-2+b4) ... Setting up gpgsm (2.2.45-2) ... Setting up rubygems-integration (1.18) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up dirmngr (2.2.45-2) ... Setting up libmodule-runtime-perl (0.016-2) ... Setting up libnsl2:amd64 (1.3.0-3+b3) ... Setting up gnupg (2.2.45-2) ... Setting up libpython3.12-stdlib:amd64 (3.12.7-3) ... Setting up libimport-into-perl (1.002005-2) ... Setting up libmoo-perl (2.005005-1) ... Setting up python3.12 (3.12.7-3) ... Setting up debhelper (13.20) ... Setting up libpython3-stdlib:amd64 (3.12.7-1) ... Setting up python3 (3.12.7-1) ... Setting up liblwp-protocol-https-perl (6.14-1) ... Setting up libruby:amd64 (1:3.1+nmu1) ... Setting up libwww-perl (6.77-1) ... Setting up ruby-rubygems (3.4.20-1) ... Setting up devscripts (2.24.4) ... Setting up ruby-sdbm:amd64 (1.0.0-5+b5) ... Setting up libruby3.1t64:amd64 (3.1.2-8.4) ... Setting up ruby3.1 (3.1.2-8.4) ... Setting up ruby3.1-dev:amd64 (3.1.2-8.4) ... Setting up ruby-all-dev:amd64 (1:3.1+nmu1) ... Setting up ruby (1:3.1+nmu1) ... Setting up ruby-rbtree (0.4.6-1+b1) ... Setting up rake (13.2.1-1) ... Setting up ruby-rspec-core (3.13.0c0e0m0s1-2) ... Setting up ruby-diff-lcs (1.5.1-1) ... Setting up ruby-sorted-set (1.0.3-3) ... Setting up gem2deb-test-runner (2.2.5) ... Setting up ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... Setting up ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... Setting up gem2deb (2.2.5) ... Setting up ruby-rspec (3.13.0c0e0m0s1-2) ... Processing triggers for libc-bin (2.40-4) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/ruby-immutable-ruby-0.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-immutable-ruby_0.1.0-2_source.changes dpkg-buildpackage: info: source package ruby-immutable-ruby dpkg-buildpackage: info: source version 0.1.0-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Jeremy Bícha dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean --buildsystem=ruby --with ruby dh_auto_clean -O--buildsystem=ruby dh_ruby --clean dh_autoreconf_clean -O--buildsystem=ruby dh_clean -O--buildsystem=ruby debian/rules binary dh binary --buildsystem=ruby --with ruby dh_update_autotools_config -O--buildsystem=ruby dh_autoreconf -O--buildsystem=ruby dh_auto_configure -O--buildsystem=ruby dh_ruby --configure dh_auto_build -O--buildsystem=ruby dh_ruby --build dh_auto_test -O--buildsystem=ruby dh_ruby --test create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=ruby dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-immutable-ruby/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby ┌──────────────────────────────────────────────────────────────────────────────┐ │ ruby-immutable-ruby: Installing files and building extensions for ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ /usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20251228-1079708-p8tiao/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: description and summary are identical WARNING: open-ended dependency on bundler (>= 2.2.10, development) is not recommended if bundler is semantically versioned, use: add_development_dependency 'bundler', '~> 2.2', '>= 2.2.10' WARNING: See https://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: immutable-ruby Version: 0.1.0 File: immutable-ruby-0.1.0.gem /usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-immutable-ruby/usr/share/rubygems-integration/all /tmp/d20251228-1079708-p8tiao/immutable-ruby-0.1.0.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext/enumerable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext/io.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/deque.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/enumerable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/hash.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/list.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/nested.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/set.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/sorted_set.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/trie.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/undefined.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/vector.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/version.rb Successfully installed immutable-ruby-0.1.0 1 gem installed cd debian/ruby-immutable-ruby/usr/share/rubygems-integration/all rm -rf bin rm -rf build_info rm -rf cache rm -rf doc rm -rf extensions rmdir plugins cd gems/immutable-ruby-0.1.0 rm -f chmod 644 lib/immutable/core_ext/enumerable.rb lib/immutable/core_ext/io.rb lib/immutable/core_ext.rb lib/immutable/deque.rb lib/immutable/enumerable.rb lib/immutable/hash.rb lib/immutable/list.rb lib/immutable/nested.rb lib/immutable/set.rb lib/immutable/sorted_set.rb lib/immutable/trie.rb lib/immutable/undefined.rb lib/immutable/vector.rb lib/immutable/version.rb lib/immutable.rb find lib/ -type d -empty -delete cd - cd - /usr/bin/ruby3.1 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -e gem\ \"immutable-ruby\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby3.1 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation Array #to_list returns an equivalent Immutable list Enumerable #to_list returns an equivalent list works on Ranges IO #to_list with a File returns an equivalent list with a StringIO returns an equivalent list Immutable::Deque #clear on [] preserves the original returns an empty deque on ["A"] preserves the original returns an empty deque on ["A", "B", "C"] preserves the original returns an empty deque from a subclass returns an instance of the subclass Immutable::Deque .[] with no arguments always returns the same instance returns an empty, frozen deque with a number of items always returns a different instance is the same as repeatedly using #endeque Immutable::Deque on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::Deque #dequeue on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on empty subclass returns empty object of same class #shift on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on empty subclass returns empty object of same class Immutable::Deque #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false after dedequeing an item from ["A", "B", "C"] returns false .empty returns the canonical empty deque from a subclass returns an empty instance of the subclass Immutable::Deque #enqueue on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["A", "B"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["A", "B", "C", "D"] #push on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["A", "B"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["A", "B", "C", "D"] Immutable::Deque #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" Immutable::Deque #inspect on [] returns "Immutable::Deque[]" returns a string which can be eval'd to get an equivalent object on ["A"] returns "Immutable::Deque[\"A\"]" returns a string which can be eval'd to get an equivalent object on ["A", "B", "C"] returns "Immutable::Deque[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent object Immutable::Deque #last on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "C" Immutable::Deque #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to push and pop items after loading Immutable::Deque .new accepts a single enumerable argument and creates a new deque is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new deque Immutable::Deque #pop on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns [] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["A", "B"] returns a frozen instance on empty subclass returns an empty object of the same class Immutable::Deque #pretty_print prints the whole Deque on one line if it fits prints each item on its own line, if not Immutable::Deque #push pushing "A" into [] preserves the original returns ["A"] returns a frozen instance pushing "B" into ["A"] preserves the original returns ["A", "B"] returns a frozen instance pushing "D" into ["A", "B", "C"] preserves the original returns ["A", "B", "C", "D"] returns a frozen instance on a subclass returns an object of same class Immutable::Deque modification (using #push, #pop, #shift, and #unshift) works when applied in many random combinations Immutable::Deque #rotate on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns ["A"] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["B", "C", "A"] returns a frozen instance on ["A", "B", "C", "D"] preserves the original returns ["A", "B", "C", "D"] returns a frozen instance on ["A", "B", "C", "D"] preserves the original returns ["C", "D", "A", "B"] returns a frozen instance on a Deque with most items on 'front' list works with a small rotation works with a larger rotation on a Deque with most items on 'rear' list works with a small rotation works with a larger rotation on empty subclass returns an empty object of the same class Immutable::Deque #shift on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns [] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["B", "C"] returns a frozen instance Immutable::Deque #size on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 #length on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 Immutable::Deque #to_a on [] returns [] returns a mutable array on ["A"] returns ["A"] returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] returns a mutable array #entries on [] returns [] returns a mutable array on ["A"] returns ["A"] returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] returns a mutable array Immutable::Deque #to_ary enables implicit conversion to block parameters method arguments works with splat Immutable::Deque #to_list on [] returns a list containing [] on ["A"] returns a list containing ["A"] on ["A", "B", "C"] returns a list containing ["A", "B", "C"] after dedequeing an item from ["A", "B", "C"] returns a list containing ["B", "C"] Immutable::Deque #unshift on [] with "A" preserves the original returns ["A"] returns a frozen instance on ["A"] with "B" preserves the original returns ["B", "A"] returns a frozen instance on ["A"] with "A" preserves the original returns ["A", "A"] returns a frozen instance on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] returns a frozen instance Immutable::Hash #all? when empty without a block returns true with a block returns true when not empty without a block returns true with a block returns true if the block always returns true returns false if the block ever returns false propagates an exception from the block stops iterating as soon as the block returns false Immutable::Hash #any? when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true (["A", "aye"]) returns false if the block always returns false returns true if the block ever returns true (["B", "bee"]) returns false if the block always returns false returns true if the block ever returns true (["C", "see"]) returns false if the block always returns false returns true if the block ever returns true ([nil, "NIL"]) returns false if the block always returns false propagates exceptions raised in the block stops iterating as soon as the block returns true with no block returns true Immutable::Hash #assoc searches for a key/val pair with a given key returns nil if a matching key is not found returns nil even if there is a default uses #== to compare keys with provided object #rassoc searches for a key/val pair with a given value returns nil if a matching value is not found returns nil even if there is a default uses #== to compare values with provided object Immutable::Hash #clear maintains the default Proc, if there is one on [] preserves the original returns an empty hash on [{"A"=>"aye"}] preserves the original returns an empty hash on [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] preserves the original returns an empty hash on a subclass returns an empty instance of the subclass Immutable::Hash .hash with nothing returns the canonical empty hash with an implicit hash is equivalent to repeatedly using #put with an array of pairs initializes a new Hash with an Immutable::Hash initializes an equivalent Hash Immutable::Hash #dup returns self #clone returns self Immutable::Hash #default_proc returns the default block given when the Hash was created returns nil if no default block was given after a key/val pair are inserted doesn't change after all key/val pairs are filtered out doesn't change after Hash is inverted doesn't change when a slice is taken doesn't change when keys are removed with #except doesn't change when Hash is mapped doesn't change when another Hash is merged in doesn't change Immutable::Hash #delete with an existing key preserves the original returns a copy with the remaining key/value pairs with a non-existing key preserves the original values returns self when removing the last key from a Hash with no default block returns the canonical empty Hash Immutable::Hash #dig returns the value with one argument to dig returns the value in nested hashes returns nil if the key is not present returns nil if you dig out the end of the hash raises a NoMethodError if a value does not support #dig returns the correct value when there is a default proc Immutable::Hash #each with a block (internal iteration) returns self yields all key/value pairs yields key/value pairs in the same order as #each_key and #each_value yields both of a pair of colliding keys yields only the key to a block expecting |key,| with no block returns an Enumerator #each_pair with a block (internal iteration) returns self yields all key/value pairs yields key/value pairs in the same order as #each_key and #each_value yields both of a pair of colliding keys yields only the key to a block expecting |key,| with no block returns an Enumerator #each_key yields all keys with no block returns an Enumerator #each_value yields all values with no block returns an Enumerator Immutable::Hash #each_with_index with a block (internal iteration) returns self yields all key/value pairs with numeric indexes with no block returns an Enumerator Immutable::Hash #empty? returns true for [] returns false for [{"A"=>"aye"}] returns false for [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] returns true for empty hashes which have a default block .empty returns the canonical empty Hash from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Hash Immutable::Hash returns true on a large hash which is modified and then modified back again #eql? returns false when comparing with a standard hash returns false when comparing with an arbitrary object returns false when comparing with a subclass of Immutable::Hash #== returns true when comparing with a standard hash returns false when comparing with an arbitrary object returns true when comparing with a subclass of Immutable::Hash performs numeric conversions between floats and BigDecimals #eql? returns true for {} and {} for {} and {} returns false for {"A"=>"aye"} and {} for {} and {"A"=>"aye"} returns false for {} and {"A"=>"aye"} for {"A"=>"aye"} and {} returns true for {"A"=>"aye"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye"} returns false for {"A"=>"aye"} and {"B"=>"bee"} for {"B"=>"bee"} and {"A"=>"aye"} returns false for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} returns false for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} returns true for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} returns true for {"C"=>"see", "A"=>"aye", "B"=>"bee"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"C"=>"see", "A"=>"aye", "B"=>"bee"} #== returns true for {} and {} for {} and {} returns false for {"A"=>"aye"} and {} for {} and {"A"=>"aye"} returns false for {} and {"A"=>"aye"} for {"A"=>"aye"} and {} returns true for {"A"=>"aye"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye"} returns false for {"A"=>"aye"} and {"B"=>"bee"} for {"B"=>"bee"} and {"A"=>"aye"} returns false for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} returns false for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} returns true for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} returns true for {"C"=>"see", "A"=>"aye", "B"=>"bee"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"C"=>"see", "A"=>"aye", "B"=>"bee"} Immutable::Hash #except works on a large Hash, with many combinations of input with only keys that the Hash has returns a Hash without those values doesn't change the original Hash with keys that the Hash doesn't have returns a Hash without the values that it had keys for doesn't change the original Hash Immutable::Hash #fetch gives precedence to default block over default argument if passed both raises an ArgumentError when not passed one or 2 arguments with no default provided when the key exists returns the value associated with the key when the key does not exist raises a KeyError with a default value when the key exists returns the value associated with the key when the key does not exist returns the default value with a default block when the key exists returns the value associated with the key when the key does not exist invokes the default block with the missing key as paramter Immutable::Hash #fetch_values when the all the requested keys exist returns a vector of values for the given keys when the key does not exist raises a KeyError Immutable::Hash #find stops iterating when the block returns true on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["B", "bee"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns [nil, "NIL"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns nil without a block returns an Enumerator #detect stops iterating when the block returns true on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["B", "bee"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns [nil, "NIL"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns nil without a block returns an Enumerator Immutable::Hash #flat_map yields each key/val pair returns the concatenation of block return values doesn't change the receiver returns an empty array if only empty arrays are returned by block with no block returns an Enumerator Immutable::Hash #flatten with flatten depth of zero returns a vector of keys/value without array keys or values returns a vector of keys and values doesn't modify the receiver on an empty Hash returns an empty Vector with array keys flattens array keys into returned vector if flatten depth is sufficient doesn't modify the receiver (or its contents) with array values flattens array values into returned vector if flatten depth is sufficient doesn't modify the receiver (or its contents) with vector keys flattens vector keys into returned vector if flatten depth is sufficient with vector values flattens vector values into returned vector if flatten depth is sufficient Immutable::Hash #get uses #hash to look up keys uses #eql? to compare keys with the same hash code does not use #eql? to compare keys with different hash codes with a default block when the key exists returns the value associated with the key does not call the default block even if the key is 'nil' when the key does not exist returns the value from the default block with no default block returns the value ("aye") for an existing key ("A") returns the value ("bee") for an existing key ("B") returns the value ("see") for an existing key ("C") returns the value ("NIL") for an existing key (nil) returns nil for a non-existing key #[] uses #hash to look up keys uses #eql? to compare keys with the same hash code does not use #eql? to compare keys with different hash codes with a default block when the key exists returns the value associated with the key does not call the default block even if the key is 'nil' when the key does not exist returns the value from the default block with no default block returns the value ("aye") for an existing key ("A") returns the value ("bee") for an existing key ("B") returns the value ("see") for an existing key ("C") returns the value ("NIL") for an existing key (nil) returns nil for a non-existing key Immutable::Hash #key? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #has_key? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #include? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #member? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false Immutable::Hash #value? returns true if any key/val pair in Hash has the same value returns false if no key/val pair in Hash has the same value uses #== to check equality works on a large hash #has_value? returns true if any key/val pair in Hash has the same value returns false if no key/val pair in Hash has the same value uses #== to check equality works on a large hash Immutable::Hash #hash values are sufficiently distributed differs given the same keys and different values differs given the same values and different keys generates the same hash value for a hash regardless of the order things were added to it on an empty hash returns 0 Immutable::Hash #inspect on [] returns "Immutable::Hash[]" on [{"A"=>"aye"}] returns "Immutable::Hash[\"A\" => \"aye\"]" on [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] returns "Immutable::Hash[\"A\" => \"aye\", \"B\" => \"bee\", \"C\" => \"see\"]" on {} returns a string which can be eval'd to get an equivalent object on {"A"=>"aye"} returns a string which can be eval'd to get an equivalent object on {:a=>"aye", :b=>"bee", :c=>"see"} returns a string which can be eval'd to get an equivalent object Immutable::Hash #invert uses the existing keys as values and values as keys will select one key/value pair among multiple which have same value doesn't change the original Hash from a subclass of Hash returns an instance of the subclass Immutable::Hash #key returns a key associated with the given value, if there is one returns nil if there is no key associated with the given value uses #== to compare values for equality doesn't use default block if value is not found Immutable::Hash #keys returns the keys as a set returns frozen String keys Immutable::Hash #map when empty returns self when not empty with a block preserves the original values returns a new hash with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass #collect when empty returns self when not empty with a block preserves the original values returns a new hash with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass Immutable::Hash #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by key after loading Immutable::Hash #merge sets any duplicate key to the value of block if passed a block yields key/value pairs in the same order as #each for {} and {} returns {} when passed an Immutable::Hash returns {} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {} returns {"A"=>"aye"} when passed an Immutable::Hash returns {"A"=>"aye"} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {"A"=>"bee"} returns {"A"=>"bee"} when passed an Immutable::Hash returns {"A"=>"bee"} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {"B"=>"bee"} returns {"A"=>"aye", "B"=>"bee"} when passed an Immutable::Hash returns {"A"=>"aye", "B"=>"bee"} when passed a Ruby Hash doesn't change the original Hashes for [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300]] and [[150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] returns [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] when passed an Immutable::Hash returns [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] when passed a Ruby Hash doesn't change the original Hashes when merging with an empty Hash returns self when merging with subset Hash returns self when called on a subclass returns an instance of the subclass Immutable::Hash #min returns the smallest key/val pair #max returns the largest key/val pair #min_by returns the smallest key/val pair (after passing it through a key function) returns the first key/val pair yielded by #each in case of a tie returns nil if the hash is empty #max_by returns the largest key/val pair (after passing it through a key function) returns the first key/val pair yielded by #each in case of a tie returns nil if the hash is empty Immutable::Hash .new is amenable to overriding of #initialize accepts an array as initializer returns a Hash which doesn't change even if initializer is mutated from a subclass returns a frozen instance of the subclass .[] accepts a Ruby Hash as initializer accepts a Immutable::Hash as initializer accepts an array as initializer can be used with a subclass of Immutable::Hash Immutable::Hash #none? when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true (["A", "aye"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true (["B", "bee"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true (["C", "see"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true ([nil, "NIL"]) returns true if the block always returns false stops iterating as soon as the block returns true with no block returns false Immutable::Hash #partition returns a pair of Immutable::Hashes returns key/val pairs for which predicate is true in first Hash returns key/val pairs for which predicate is false in second Hash doesn't modify the original Hash from a subclass should return instances of the subclass Immutable::Hash #pretty_print prints the whole Hash on one line if it fits prints each key/val pair on its own line, if not prints keys and vals on separate lines, if space is very tight Immutable::Hash #[]= raises error pointing to #put #put with a block passes the value to the block replaces the value with the result of the block supports to_proc methods if there is no existing association passes nil to the block stores the result of the block as the new value with a unique key preserves the original returns a copy with the superset of key/value pairs with a duplicate key preserves the original returns a copy with the superset of key/value pairs with duplicate key and identical value returns the original hash unmodified with big hash (force nested tries) returns the original hash unmodified for all changes with unequal keys which hash to the same value stores and can retrieve both when a String is inserted as key and then mutated is not affected Immutable::Hash #reduce when empty returns the memo when not empty with a block returns the final memo with no block uses a passed string as the name of a method to use instead uses a passed symbol as the name of a method to use instead #inject when empty returns the memo when not empty with a block returns the final memo with no block uses a passed string as the name of a method to use instead uses a passed symbol as the name of a method to use instead Immutable::Hash #reject when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values yields entries in the same order as #each with no block returns an Enumerator on a large hash, with many combinations of input still works #delete_if when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values yields entries in the same order as #each with no block returns an Enumerator on a large hash, with many combinations of input still works Immutable::Hash #reverse_each with a block returns self yields all key/value pairs in the opposite order as #each with no block returns an Enumerator Immutable::Hash #sample returns a randomly chosen item Immutable::Hash #select works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator #find_all works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator #keep_if works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator Immutable::Hash #size returns 0 for [] returns 1 for [{"A"=>"aye"}] returns 3 for [{"A"=>"bee", "B"=>"bee", "C"=>"see"}] has the correct size after adding lots of things with colliding keys and such has the correct size after lots of addings and removings #length returns 0 for [] returns 1 for [{"A"=>"aye"}] returns 3 for [{"A"=>"bee", "B"=>"bee", "C"=>"see"}] has the correct size after adding lots of things with colliding keys and such has the correct size after lots of addings and removings Immutable::Hash #slice with all keys present in the Hash returns the sliced values doesn't modify the original Hash with keys aren't present in the Hash returns the sliced values of the matching keys doesn't modify the original Hash on a Hash with a default block maintains the default block Immutable::Hash #sort returns a Vector of sorted key/val pairs works on large hashes uses block as comparator to sort if passed a block #sort_by returns a Vector of key/val pairs, sorted using the block as a key function Immutable::Hash #store with a unique key preserves the original returns a copy with the superset of key/value pairs with a duplicate key preserves the original returns a copy with the superset of key/value pairs with duplicate key and identical value returns the original hash unmodified with big hash (force nested tries) returns the original hash unmodified for all changes with unequal keys which hash to the same value stores and can retrieve both when a String is inserted as key and then mutated is not affected Immutable::Hash #<= for {} and {} returns true for {"A"=>1} and {} returns false for {} and {"A"=>1} returns true for {"A"=>1} and {"A"=>1} returns true for {"A"=>1} and {"A"=>2} returns false for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns true for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns false for {"B"=>0} and {"A"=>1, "B"=>2, "C"=>3} returns false #< for {} and {} returns false for {"A"=>1} and {} returns false for {} and {"A"=>1} returns true for {"A"=>1} and {"A"=>1} returns false for {"A"=>1} and {"A"=>2} returns false for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns true for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns false for {"B"=>0} and {"A"=>1, "B"=>2, "C"=>3} returns false Immutable::Hash #>= for {} and {} returns true for {"A"=>1} and {} returns true for {} and {"A"=>1} returns false for {"A"=>1} and {"A"=>1} returns true for {"A"=>1} and {"A"=>2} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns true for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>0} returns false #> for {} and {} returns false for {"A"=>1} and {} returns true for {} and {"A"=>1} returns false for {"A"=>1} and {"A"=>1} returns false for {"A"=>1} and {"A"=>2} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns true for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>0} returns false Immutable::Hash #take returns the first N key/val pairs from hash #take_while passes elements to the block until the block returns nil/false returns an array of all elements before the one which returned nil/false passes all elements if the block never returns nil/false Immutable::Hash #to_a returns an Array of [key, value] pairs in same order as #each Immutable::Hash #to_hash converts an empty Immutable::Hash to an empty Ruby Hash converts a non-empty Immutable::Hash to a Hash with the same keys and values doesn't modify the receiver #to_h converts an empty Immutable::Hash to an empty Ruby Hash converts a non-empty Immutable::Hash to a Hash with the same keys and values doesn't modify the receiver Immutable::Hash #to_proc on Hash without default proc returns a Proc instance returns a Proc that returns the value of an existing key returns a Proc that returns nil for a missing key on Hash with a default proc returns a Proc instance returns a Proc that returns the value of an existing key returns a Proc that returns the result of the hash's default proc for a missing key Immutable::Hash #update_in with one level on existing key passes the value to the block replaces the value with the result of the block should preserve the original with multi-level on existing keys passes the value to the block replaces the value with the result of the block should preserve the original with multi-level creating sub-hashes when keys don't exist passes nil to the block creates subhashes on the way to set the value with multi-level including vector with existing keys passes the value to the block replaces the value with the result of the block should preserve the original with empty key_path raises ArguemntError Immutable::Hash #values_at on Hash without default proc returns an empty vector when no keys are given returns a vector of values for the given keys fills nil when keys are missing on Hash with default proc fills the result of the default proc when keys are missing Immutable::Hash #values returns the keys as a Vector with duplicates returns the keys as a Vector Immutable::List #add on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] Immutable::List #all? on a really big list doesn't run out of stack when empty with a block returns true with no block returns true when not empty with a block if the block always returns true returns true if the block ever returns false returns false with no block if all values are truthy returns true if any value is nil returns false if any value is false returns false Immutable::List #any? on a really big list doesn't run out of stack when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true ("A") returns true if the block ever returns true ("B") returns true if the block ever returns true ("C") returns true if the block ever returns true (nil) returns false if the block always returns false with no block returns true if any value is truthy returns false if all values are falsey Immutable::List #append is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] #concat is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] #+ is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] Immutable::List #at on a really big list doesn't run out of stack [] with 10 returns nil ["A"] with 10 returns nil ["A", "B", "C"] with 0 returns "A" ["A", "B", "C"] with 2 returns "C" ["A", "B", "C"] with -1 returns "C" ["A", "B", "C"] with -2 returns "B" ["A", "B", "C"] with -4 returns nil Immutable::List #break is lazy on [] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty Immutable::List #car is responded to on [] preserves the original returns nil #car is responded to on ["A"] preserves the original returns "A" #car is responded to on ["A", "B", "C"] preserves the original returns "A" #cadr is responded to on ["A", "B", "C"] preserves the original returns "B" #caddr is responded to on ["A", "B", "C"] preserves the original returns "C" #cadddr is responded to on ["A", "B", "C"] preserves the original returns nil #caddddr is responded to on ["A", "B", "C"] preserves the original returns nil #cdr is responded to on [] preserves the original returns Immutable::List[] #cdr is responded to on ["A"] preserves the original returns Immutable::List[] #cdr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List["B", "C"] #cddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List["C"] #cdddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List[] #cddddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List[] Immutable::List #chunk is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A", "B"], Immutable::List["C"]] Immutable::List #clear on [] preserves the original returns an empty list on ["A"] preserves the original returns an empty list on ["A", "B", "C"] preserves the original returns an empty list Immutable::List #combination is lazy on ["A", "B", "C", "D"] in groups of 1 preserves the original returns [Immutable::List["A"], Immutable::List["B"], Immutable::List["C"], Immutable::List["D"]] on ["A", "B", "C", "D"] in groups of 2 preserves the original returns [Immutable::List["A", "B"], Immutable::List["A", "C"], Immutable::List["A", "D"], Immutable::List["B", "C"], Immutable::List["B", "D"], Immutable::List["C", "D"]] on ["A", "B", "C", "D"] in groups of 3 preserves the original returns [Immutable::List["A", "B", "C"], Immutable::List["A", "B", "D"], Immutable::List["A", "C", "D"], Immutable::List["B", "C", "D"]] on ["A", "B", "C", "D"] in groups of 4 preserves the original returns [Immutable::List["A", "B", "C", "D"]] on ["A", "B", "C", "D"] in groups of 0 preserves the original returns [Immutable::List[]] on ["A", "B", "C", "D"] in groups of 5 preserves the original returns [] on [] in groups of 0 preserves the original returns [Immutable::List[]] on [] in groups of 1 preserves the original returns [] Immutable::List #compact is lazy on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on [nil] preserves the original returns [] on [nil, "B"] preserves the original returns ["B"] on ["A", nil] preserves the original returns ["A"] on [nil, nil] preserves the original returns [] on ["A", nil, "C"] preserves the original returns ["A", "C"] on [nil, "B", nil] preserves the original returns ["B"] Immutable::List #<=> with [] and [1] returns -1 with [1] and [] returns 1 with [] and [] returns 0 with [1] and [2] returns -1 with [2] and [1] returns 1 with [1] and [1] returns 0 with [1] and [1, 2] returns -1 with [1, 2] and [1] returns 1 with [1] and [1] returns 0 with [2, 3, 4] and [3, 4, 5] returns -1 with [3, 4, 5] and [2, 3, 4] returns 1 with [2, 3, 4] and [2, 3, 4] returns 0 Immutable::List #cons on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] Immutable .list with no arguments always returns the same instance returns an empty list with a number of items always returns a different instance is the same as repeatedly using #cons .stream with no block returns an empty list with a block repeatedly calls the block .interval for numbers is equivalent to a list with explicit values for strings is equivalent to a list with explicit values .repeat returns an infinite list with specified value for each element .replicate returns a list with the specified value repeated the specified number of times .iterate returns an infinite list where the first item is calculated by applying the block on the initial argument, the second item by applying the function on the previous result and so on .enumerate returns a list based on the values yielded from the enumerator realizes values as they are needed [] takes a variable number of items and returns a list returns an empty list when called without arguments Immutable::List on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::List #count on a really big list doesn't run out of stack on [] with a block returns 0 without a block returns length on [1] with a block returns 1 without a block returns length on [1, 2] with a block returns 1 without a block returns length on [1, 2, 3] with a block returns 2 without a block returns length on [1, 2, 3, 4] with a block returns 2 without a block returns length on [1, 2, 3, 4, 5] with a block returns 3 without a block returns length Immutable #cycle is lazy with an empty list returns an empty list with a non-empty list preserves the original infinitely cycles through all values Immutable::List #delete_at removes the element at the specified index makes no modification if the index is out of range Immutable::List #delete removes elements that are #== to the argument Immutable::List #drop is lazy with 10 from [] preserves the original returns [] with 10 from ["A"] preserves the original returns [] with -1 from ["A"] preserves the original returns ["A"] with 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] with 2 from ["A", "B", "C"] preserves the original returns ["C"] Immutable::List #drop_while is lazy on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator Immutable::List #each_chunk on a really big list doesn't run out of stack on [] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A", "B", "C"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator #each_slice on a really big list doesn't run out of stack on [] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A", "B", "C"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator Immutable::List #each on a really big list doesn't run out of stack on [] with a block iterates over the items in order returns nil without a block returns an Enumerator on ["A"] with a block iterates over the items in order returns nil without a block returns an Enumerator on ["A", "B", "C"] with a block iterates over the items in order returns nil without a block returns an Enumerator Immutable::List #each_with_index with no block returns an Enumerator with a block returns self iterates over the items in order, yielding item and index Immutable::List #empty? on a really big list doesn't run out of stack on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false Immutable::List Immutable::List["A", "B", "C"] should == ["A", "B", "C"] Immutable::List["A", "B", "C"] should not eql? ["A", "B", "C"] Immutable::List["A", "B", "C"] should not == # Immutable::List["A", "B", "C"] should not eql? # Immutable::List[] should == [] Immutable::List[] should not eql? [] Immutable::List[] should eql? Immutable::List[] Immutable::List[] should == Immutable::List[] Immutable::List[] should not eql? Immutable::List[nil] Immutable::List["A"] should not eql? Immutable::List[] Immutable::List["A"] should eql? Immutable::List["A"] Immutable::List["A"] should == Immutable::List["A"] Immutable::List["A"] should not eql? Immutable::List["B"] Immutable::List["A", "B"] should not eql? Immutable::List["A"] Immutable::List["A", "B", "C"] should eql? Immutable::List["A", "B", "C"] Immutable::List["A", "B", "C"] should == Immutable::List["A", "B", "C"] Immutable::List["C", "A", "B"] should not eql? Immutable::List["A", "B", "C"] Immutable::List["A"] should == ["A"] ["A"] should == Immutable::List["A"] Immutable::List["A"] should not eql? ["A"] ["A"] should not eql? Immutable::List["A"] #eql? on a really big list doesn't run out of stack Immutable::List #fill can replace a range of items at the beginning of a list can replace a range of items in the middle of a list can replace a range of items at the end of a list can replace all the items in a list can fill past the end of the list is lazy with 1 argument replaces all the items in the list by default with 2 arguments replaces up to the end of the list by default when index and length are 0 leaves the list unmodified Immutable::List #find_all is lazy with an empty array with a block preserves the original returns the found list without a block returns an Enumerator with a single item array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item single find_allable array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item multi-find_allable array with a block preserves the original returns the found list without a block returns an Enumerator Immutable::List #find_index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 #index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 Immutable::List #find on a really big list doesn't run out of stack on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator #detect on a really big list doesn't run out of stack on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator Immutable::List #flat_map with an empty list returns the flattened values as a Immutable::List returns a Immutable::List with a block that returns an empty list returns the flattened values as a Immutable::List returns a Immutable::List with a list of one item returns the flattened values as a Immutable::List returns a Immutable::List with a list of multiple items returns the flattened values as a Immutable::List returns a Immutable::List Immutable #flatten is lazy on [] preserves the original returns an empty list on ["A"] preserves the original returns an empty list on ["A", "B", "C"] preserves the original returns an empty list on ["A", Immutable::List["B"], "C"] preserves the original returns an empty list on [Immutable::List["A"], Immutable::List["B"], Immutable::List["C"]] preserves the original returns an empty list Immutable::List #grep is lazy without a block on [] returns [] on ["A"] returns ["A"] on [1] returns [] on ["A", 2, "C"] returns ["A", "C"] with a block on [] preserves the original returns [] on ["A"] preserves the original returns ["a"] on [1] preserves the original returns [] on ["A", 2, "C"] preserves the original returns ["a", "c"] Immutable::List #group_by on a really big list doesn't run out of stack with a block on [] returns [] on [1] returns [{true=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::List[3, 1], false=>Immutable::List[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::List[1], 2=>Immutable::List[2], 3=>Immutable::List[3], 4=>Immutable::List[4]}] #group on a really big list doesn't run out of stack with a block on [] returns [] on [1] returns [{true=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::List[3, 1], false=>Immutable::List[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::List[1], 2=>Immutable::List[2], 3=>Immutable::List[3], 4=>Immutable::List[4]}] Immutable::List #hash values are sufficiently distributed on a really big list doesn't run out of stack on an empty list returns 0 Immutable::List #head on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" Immutable::List #include? on a really big list doesn't run out of stack on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true #member? on a really big list doesn't run out of stack on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true Immutable::List #index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 Immutable::List #indices when called with a block is lazy on a large list which doesn't contain desired item doesn't blow the stack looking for "A" in [] returns [] looking for "B" in ["A"] returns [] looking for "B" in ["A", "B", "A"] returns [1] looking for "A" in ["A", "B", "A"] returns [0, 2] looking for 2 in [2] returns [0] looking for 2.0 in [2] returns [0] looking for 2.0 in [2.0] returns [0] looking for 2 in [2.0] returns [0] when called with a single argument is lazy looking for "A" in [] returns [] looking for "B" in ["A"] returns [] looking for "B" in ["A", "B", "A"] returns [1] looking for "A" in ["A", "B", "A"] returns [0, 2] looking for 2 in [2] returns [0] looking for 2.0 in [2] returns [0] looking for 2.0 in [2.0] returns [0] looking for 2 in [2.0] returns [0] Immutable::List #init is lazy on [] preserves the original returns the list without the last element: [] on ["A"] preserves the original returns the list without the last element: [] on ["A", "B", "C"] preserves the original returns the list without the last element: ["A", "B"] Immutable::List #inits is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A"], Immutable::List["A", "B"], Immutable::List["A", "B", "C"]] Immutable::List #insert can add items at the beginning of a list can add items in the middle of a list can add items at the end of a list can add items past the end of a list accepts a negative index, which counts back from the end of the list raises IndexError if a negative index is too great is lazy Immutable::List #inspect on a really big list doesn't run out of stack on [] returns "Immutable::List[]" returns a string which can be eval'd to get an equivalent object on ["A"] returns "Immutable::List[\"A\"]" returns a string which can be eval'd to get an equivalent object on ["A", "B", "C"] returns "Immutable::List[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent object Immutable::List #intersperse is lazy on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "|", "B", "|", "C"] Immutable::List #join on a really big list doesn't run out of stack with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) uses the default global separator Immutable::List #last on a really big list doesn't run out of stack on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "C" Immutable::List #<< adds an item onto the end of a list on an empty list returns a list with one item Immutable::List #map is lazy on [] with a block preserves the original returns [] is lazy without a block returns an Enumerator on ["A"] with a block preserves the original returns ["a"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["a", "b", "c"] is lazy without a block returns an Enumerator #collect is lazy on [] with a block preserves the original returns [] is lazy without a block returns an Enumerator on ["A"] with a block preserves the original returns ["a"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["a", "b", "c"] is lazy without a block returns an Enumerator Immutable::List #max on a really big list doesn't run out of stack with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::List without a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on natural sort order with a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on the specified transformer Immutable::List without a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on natural sort order with a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on the specified comparator Immutable::List #min on a really big list doesn't run out of stack with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::List ensures each node of a lazy list will only be realized on ONE thread, even when accessed by multiple threads doesn't go into an infinite loop if lazy list block raises an exception doesn't give horrendously bad performance if thread realizing the list sleeps Immutable::List #none? on a really big list doesn't run out of stack when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true ("A") returns false if the block ever returns true ("B") returns false if the block ever returns true ("C") returns false if the block ever returns true (nil) returns true if the block always returns false with no block returns false if any value is truthy returns true if all values are falsey Immutable::List #one? on a really big list doesn't run out of stack when empty with a block returns false with no block returns false when not empty with a block returns false if the block returns true more than once returns false if the block never returns true returns true if the block only returns true once with no block returns false if more than one value is truthy returns true if only one value is truthy Immutable::List #partition is lazy calls the passed block only once for each item returns a lazy list of items for which predicate is true returns a lazy list of items for which predicate is false calls the passed block only once for each item, even with multiple threads on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::List #permutation with no block returns an Enumerator with no argument yields all permutations of the list with a length argument yields all N-size permutations of the list with a length argument greater than length of list yields nothing with a length argument of 0 yields an empty list with a block returns the original list Immutable::List #pop with an empty list returns an empty list with a list with a few items removes the last item Immutable::List #product on a really big list doesn't run out of stack on [] returns 1 on [2] returns 2 on [1, 3, 5, 7, 11] returns 1155 Immutable::List #reduce on a really big list doesn't run out of stack on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on a really big list doesn't run out of stack on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::List #reject is lazy on [] with a block returns [] is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] is lazy without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] is lazy without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] is lazy without a block returns an Enumerator #delete_if is lazy on [] with a block returns [] is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] is lazy without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] is lazy without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] is lazy without a block returns an Enumerator Immutable::List #reverse is lazy on a really big list doesn't run out of stack on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["C", "B", "A"] Immutable::List #rotate when passed no argument returns a new list with the first element moved to the end with an integral argument n returns a new list with the first (n % size) elements moved to the end with a non-numeric argument raises a TypeError with an argument of zero (or one evenly divisible by list length) it returns self Immutable::List #sample returns a randomly chosen item Immutable::List #select is lazy with an empty array with a block preserves the original returns the selected list without a block returns an Enumerator with a single item array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item single selectable array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item multi-selectable array with a block preserves the original returns the selected list without a block returns an Enumerator Immutable::List #size on a really big list doesn't run out of stack on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 #length on a really big list doesn't run out of stack on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 Immutable::List #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the list when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the list when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range Immutable::List #sort is lazy on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] #sort_by is lazy on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] List#span is lazy given a predicate (in the form of a block), splits the list into two lists (returned as an array) such that elements in the first list (the prefix) are taken from the head of the list while the predicate is satisfied, and elements in the second list (the remainder) are the remaining elements from the list once the predicate is not satisfied. For example: given the list [] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2, 3] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [3] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2, 3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [2, 3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [2] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder Immutable::List #split_at is lazy on [] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2, 3] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2, 3, 4] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder Immutable::List #subsequences yields all sublists with 1 or more consecutive items with no block returns an Enumerator Immutable::List #sum on a really big list doesn't run out of stack on [] returns 0 on [2] returns 2 on [1, 3, 5, 7, 11] returns 27 Immutable::List #tail on a really big list doesn't run out of stack on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] Immutable::List #tails is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A", "B", "C"], Immutable::List["B", "C"], Immutable::List["C"]] Immutable::List #take is lazy 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] -1 from ["A"] preserves the original returns [] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] Immutable::List #take_while is lazy on [] with a block returns [] preserves the original is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original is lazy without a block returns an Enumerator Immutable::List #to_a on a really big list doesn't run out of stack on [] returns [] leaves the original unchanged returns a mutable array on ["A"] returns ["A"] leaves the original unchanged returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] leaves the original unchanged returns a mutable array #entries on a really big list doesn't run out of stack on [] returns [] leaves the original unchanged returns a mutable array on ["A"] returns ["A"] leaves the original unchanged returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] leaves the original unchanged returns a mutable array Immutable::List #to_ary on a really big list doesn't run out of stack enables implicit conversion to block parameters method arguments works with splat Immutable::List #to_list on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::List #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values Immutable::List #transpose takes a list of lists and returns a list of all the first elements, all the 2nd elements, and so on only goes as far as the shortest list Immutable::List #union is lazy returns [] for [] and [] for [] and [] returns ["A"] for ["A"] and [] for [] and ["A"] returns ["A", "B", "C"] for ["A", "B", "C"] and [] for [] and ["A", "B", "C"] returns ["A"] for ["A", "A"] and ["A"] for ["A"] and ["A", "A"] #| is lazy returns [] for [] and [] for [] and [] returns ["A"] for ["A"] and [] for [] and ["A"] returns ["A", "B", "C"] for ["A", "B", "C"] and [] for [] and ["A", "B", "C"] returns ["A"] for ["A", "A"] and ["A"] for ["A"] and ["A", "A"] Immutable::List #uniq is lazy when passed a block uses the block to identify duplicates on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on ["A", "B", "A", "C", "C"] preserves the original returns ["A", "B", "C"] Immutable::List #zip is lazy on [] and [] returns [] on ["A"] and ["aye"] returns [Immutable::List["A", "aye"]] on ["A"] and [] returns [Immutable::List["A", nil]] on [] and ["A"] returns [Immutable::List[nil, "A"]] on ["A", "B", "C"] and ["aye", "bee", "see"] returns [Immutable::List["A", "aye"], Immutable::List["B", "bee"], Immutable::List["C", "see"]] Immutable .from with {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} as input should return Immutable::Hash["b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "a" => 1, "d" => Immutable::Set[6, 7, 5], "e" => Immutable::Hash["f" => 8, "g" => 9], "h" => /ijk/] with {} as input should return Immutable::Hash[] with {"a"=>1, "b"=>2, "c"=>3} as input should return Immutable::Hash["c" => 3, "b" => 2, "a" => 1] with [] as input should return Immutable::Vector[] with [1, 2, 3] as input should return Immutable::Vector[1, 2, 3] with # as input should return Immutable::Set[] with # as input should return Immutable::Set[3, 1, 2] with 42 as input should return 42 with #> as input should return #> with # as input should return Immutable::Hash[:name => nil, :address => nil] with # as input should return Immutable::Hash[:name => "Dave", :address => "123 Main"] with mixed object should return Immutable data .to_ruby with Immutable::Hash["b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "a" => 1, "d" => Immutable::Set[6, 7, 5], "e" => Immutable::Hash["f" => 8, "g" => 9], "h" => /ijk/] as input should return {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} with Immutable::Hash[] as input should return {} with Immutable::Hash["c" => 3, "b" => 2, "a" => 1] as input should return {"a"=>1, "b"=>2, "c"=>3} with Immutable::Vector[] as input should return [] with Immutable::Vector[1, 2, 3] as input should return [1, 2, 3] with Immutable::Set[] as input should return # with Immutable::Set[3, 1, 2] as input should return # with 42 as input should return 42 with #> as input should return #> with Immutable::Deque[] as input should return [] with Immutable::Deque[Immutable::Hash["a" => 1]] as input should return [{"a" => 1}] with Immutable::SortedSet[] as input should return ::SortedSet.new with Immutable::SortedSet[1, 2, 3] as input should return ::SortedSet.new with mixed object should return Ruby data structures Immutable::Set #add can add nil to a set works on large sets, with many combinations of input with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns self #<< can add nil to a set works on large sets, with many combinations of input with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns self #add? with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns false Immutable::Set #all? when empty with a block returns true with no block returns true when not empty with a block returns true if the block always returns true returns false if the block ever returns false propagates an exception from the block stops iterating as soon as the block returns false with no block returns true if all values are truthy returns false if any value is nil returns false if any value is false Immutable::Set #any? when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true ("A") returns true if the block ever returns true ("B") returns true if the block ever returns true ("C") returns true if the block ever returns true (nil) returns false if the block always returns false propagates exceptions raised in the block stops iterating as soon as the block returns true with no block returns true if any value is truthy returns false if all values are falsey Immutable::Set #clear on [] preserves the original returns an empty set on ["A"] preserves the original returns an empty set on ["A", "B", "C"] preserves the original returns an empty set from a subclass returns an empty instance of the subclass Immutable::Set #compact on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on [nil] preserves the original returns [] on [nil, "B"] preserves the original returns ["B"] on ["A", nil] preserves the original returns ["A"] on [nil, nil] preserves the original returns [] on ["A", nil, "C"] preserves the original returns ["A", "C"] on [nil, "B", nil] preserves the original returns ["B"] Immutable::Set .set with no values returns the empty set with a list of values is equivalent to repeatedly using #add Immutable::Set #dup returns self #clone returns self Immutable::Set #count works on large sets on [] with a block returns 0 without a block returns length on [1] with a block returns 1 without a block returns length on [1, 2] with a block returns 1 without a block returns length on [1, 2, 3] with a block returns 2 without a block returns length on [1, 2, 3, 4] with a block returns 2 without a block returns length on [1, 2, 3, 4, 5] with a block returns 3 without a block returns length Immutable::Set #delete works on large sets, with many combinations of input with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns self when removing the last value in a set returns the canonical empty set #delete? with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns false Immutable::Set #difference works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set #subtract works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set #- works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set Immutable::Set #disjoint? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["D", "E"] returns true for ["F", "G", "H", "I"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["D", "E", "F", "G"] and ["A", "B", "C"] returns true Immutable::Set #each yields both of a pair of colliding keys without a block returns an Enumerator with an empty block returns self with a block yields all values Immutable::Set #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false on [nil] returns false on [false] returns false .empty returns the canonical empty set from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Set Immutable::Set #== when comparing to a standard set returns false when comparing to a arbitrary object returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true Immutable::Set #eql? when comparing to a standard set returns false when comparing to a arbitrary object returns false when comparing with a subclass of Immutable::Set returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true Immutable::Set #exclusion works for a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B", "C", "D"] doesn't modify the original Sets returns ["A", "D"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["D", "E", "F"] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F"] when passed a Ruby Array returns the expected Set #^ works for a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B", "C", "D"] doesn't modify the original Sets returns ["A", "D"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["D", "E", "F"] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F"] when passed a Ruby Array returns the expected Set Immutable::Set #find on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator #detect on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator Immutable::Set #first returns nil if only member of set is nil returns the first item yielded by #each on an empty set returns nil on a non-empty set returns an arbitrary value from the set Immutable #flatten on ["A"] preserves the original returns the inlined values on ["A", "B", "C"] preserves the original returns the inlined values on ["A", Immutable::Set["B"], "C"] preserves the original returns the inlined values on [Immutable::Set["A"], Immutable::Set["B"], Immutable::Set["C"]] preserves the original returns the inlined values on an empty set returns an empty set on a set with multiple levels of nesting inlines lower levels of nesting from a subclass returns an instance of the subclass Immutable::Set #grep without a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values with a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values Immutable::Set #grep_v without a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values with a block resulting items are processed with the block returns the filtered values Immutable::Set #group_by returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass #group returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass #classify returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass Immutable::Set #hash generates the same hash value for a set regardless of the order things were added to it values are sufficiently distributed on an empty set returns 0 Immutable::Set #include? returns true for an existing value ("A") returns true for an existing value ("B") returns true for an existing value ("C") returns true for an existing value (2.0) returns true for an existing value (nil) returns false for a non-existing value returns true even if existing value is nil returns true even if existing value is false returns false for a mutable item which is mutated after adding uses #eql? for equality returns the right answers after a lot of addings and removings #member? returns true for an existing value ("A") returns true for an existing value ("B") returns true for an existing value ("C") returns true for an existing value (2.0) returns true for an existing value (nil) returns false for a non-existing value returns true even if existing value is nil returns true even if existing value is false returns false for a mutable item which is mutated after adding uses #eql? for equality returns the right answers after a lot of addings and removings Immutable::Set #inspect on [] returns "Immutable::Set[]" returns a string which can be eval'd to get an equivalent set on ["A"] returns "Immutable::Set[\"A\"]" returns a string which can be eval'd to get an equivalent set on ["A", "B", "C"] returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set from a subclass returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set Immutable::Set #intersect? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["D", "E"] returns false for ["F", "G", "H", "I"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["D", "E", "F", "G"] and ["A", "B", "C"] returns false Immutable::Set #intersection returns results consistent with Array#& for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and [] returns [], without changing the original Sets for [] and ["A"] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] returns ["B"], without changing the original Sets for ["B"] and ["A", "B", "C"] returns ["B"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"], without changing the original Sets for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set #& returns results consistent with Array#& for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and [] returns [], without changing the original Sets for [] and ["A"] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] returns ["B"], without changing the original Sets for ["B"] and ["A", "B", "C"] returns ["B"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"], without changing the original Sets for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set Immutable::Set #join with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) on ['A', 'B', 'C'] preserves the original returns nil Immutable::Set #map works on large sets when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass when multiple items map to the same value filters out the duplicates #collect works on large sets when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass when multiple items map to the same value filters out the duplicates Immutable::Set #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to test items by key after loading Immutable::Set #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::Set #min with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::Set .new initializes a new set accepts a Range returns a Set which doesn't change even if the initializer is mutated is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass [] accepts any number of arguments and initializes a new set Immutable::Set #none? when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true ("A") returns false if the block ever returns true ("B") returns false if the block ever returns true ("C") returns false if the block ever returns true (nil) returns true if the block always returns false stops iterating as soon as the block returns true with no block returns false if any value is truthy returns true if all values are falsey Immutable::Set #one? when empty with a block returns false with no block returns false when not empty with a block returns false if the block returns true more than once returns false if the block never returns true returns true if the block only returns true once with no block returns false if more than one value is truthy returns true if only one value is truthy returns false if no values are truthy Immutable::Set #partition on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::Set #product on [] returns 1 doesn't change the original Set on [2] returns 2 doesn't change the original Set on [1, 3, 5, 7, 11] returns 1155 doesn't change the original Set Immutable::Set #reduce on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns 6 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns 6 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::Set #reject when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns self on a large set, with many combinations of input still works #delete_if when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns self on a large set, with many combinations of input still works Immutable::Set #reverse_each without a block returns an Enumerator with an empty block returns self with a block yields all values Immutable::Set #sample returns a randomly chosen item Immutable::Set #select works on a large set, with many combinations of input when everything matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class #find_all works on a large set, with many combinations of input when everything matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class Immutable::Set #size returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] #length returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] Immutable::Set #sort on [] with a block returns [] doesn't change the original Set without a block returns [] doesn't change the original Set on ["A"] with a block returns ["A"] doesn't change the original Set without a block returns ["A"] doesn't change the original Set on ["Ichi", "Ni", "San"] with a block returns ["Ni", "San", "Ichi"] doesn't change the original Set without a block returns ["Ichi", "Ni", "San"] doesn't change the original Set #sort_by on [] with a block returns [] doesn't change the original Set without a block returns [] doesn't change the original Set on ["A"] with a block returns ["A"] doesn't change the original Set without a block returns ["A"] doesn't change the original Set on ["Ichi", "Ni", "San"] with a block returns ["Ni", "San", "Ichi"] doesn't change the original Set without a block returns ["Ichi", "Ni", "San"] doesn't change the original Set #sort_by calls the passed block no more than twice for each item Immutable::Set #subset? for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #<= for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #proper_subset? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #< for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false Immutable::Set #sum on [] returns 0 doesn't change the original Set on [2] returns 2 doesn't change the original Set on [1, 3, 5, 7, 11] returns 27 doesn't change the original Set Immutable::Set #superset? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #>= for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #proper_superset? for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #> for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true Immutable::Set #to_a on 'a'..'a' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'b' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'c' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'d' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'e' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'f' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'g' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'h' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'i' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'j' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'k' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'l' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'m' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'n' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'o' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'p' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'q' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'r' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'s' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'t' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'u' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'v' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'w' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'x' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'y' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'z' returns an equivalent array doesn't change the original Set returns a mutable array #entries on 'a'..'a' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'b' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'c' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'d' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'e' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'f' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'g' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'h' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'i' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'j' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'k' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'l' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'m' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'n' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'o' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'p' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'q' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'r' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'s' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'t' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'u' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'v' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'w' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'x' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'y' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'z' returns an equivalent array doesn't change the original Set returns a mutable array Immutable::Set #to_list on [] returns a list doesn't change the original Set the returned list has the correct length contains all values on ["A"] returns a list doesn't change the original Set the returned list has the correct length contains all values on ["A", "B", "C"] returns a list doesn't change the original Set the returned list has the correct length contains all values Immutable::Set #to_set on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::Set #union for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #| for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #+ for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #merge for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self Immutable::SortedSet #above when called without a block returns a sorted set of all items higher than the argument when called with a block yields all the items higher than the argument on an empty set returns an empty set with an argument higher than all the values in the set returns an empty set Immutable::SortedSet #add with a unique value preserves the original returns a copy with the superset of values (in order) with a duplicate value preserves the original values returns self on a set ordered by a comparator inserts the new item in the correct place #<< with a unique value preserves the original returns a copy with the superset of values (in order) with a duplicate value preserves the original values returns self on a set ordered by a comparator inserts the new item in the correct place #add? with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns false Immutable::SortedSet #at [] with 10 returns nil ["A"] with 10 returns nil ["A", "B", "C"] with 0 returns "A" ["A", "B", "C"] with 1 returns "B" ["A", "B", "C"] with 2 returns "C" ["A", "B", "C"] with 3 returns nil ["A", "B", "C"] with -1 returns "C" ["A", "B", "C"] with -2 returns "B" ["A", "B", "C"] with -3 returns "A" ["A", "B", "C"] with -4 returns nil Immutable::SortedSet #below when called without a block returns a sorted set of all items lower than the argument when called with a block yields all the items lower than the argument on an empty set returns an empty set with an argument lower than all the values in the set returns an empty set Immutable::SortedSet #between when called without a block returns a sorted set of all items from the first argument to the second when called with a block yields all the items lower than the argument on an empty set returns an empty set with a 'to' argument lower than the 'from' argument returns an empty set Immutable::SortedSet #clear on [] preserves the original returns an empty set on ["A"] preserves the original returns an empty set on ["A", "B", "C"] preserves the original returns an empty set from a subclass returns an empty instance of the subclass with a comparator returns an empty instance with same comparator Immutable::SortedSet on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self Immutable::SortedSet #delete_at removes the element at the specified index makes no modification if the index is out of range Immutable::SortedSet #delete on an empty set returns an empty set with an existing value preserves the original returns a copy with the remaining of values with a non-existing value preserves the original values returns self when removing the last value in a sorted set maintains the set order when the set is in natural order returns the canonical empty set on [1, 2, 3], when deleting [1, 2, 3] returns [] on [1, 2, 3, 4], when deleting [1, 2, 3] returns [4] on [1, 2, 3, 4], when deleting [1, 2, 4] returns [3] on [1, 2, 3, 4], when deleting [1, 3, 4] returns [2] on [1, 2, 3, 4], when deleting [2, 3, 4] returns [1] on [1, 2, 3, 4, 5], when deleting [1, 2, 3] returns [4, 5] on [1, 2, 3, 4, 5], when deleting [1, 2, 4] returns [3, 5] on [1, 2, 3, 4, 5], when deleting [1, 2, 5] returns [3, 4] on [1, 2, 3, 4, 5], when deleting [1, 3, 4] returns [2, 5] on [1, 2, 3, 4, 5], when deleting [1, 3, 5] returns [2, 4] on [1, 2, 3, 4, 5], when deleting [1, 4, 5] returns [2, 3] on [1, 2, 3, 4, 5], when deleting [2, 3, 4] returns [1, 5] on [1, 2, 3, 4, 5], when deleting [2, 3, 5] returns [1, 4] on [1, 2, 3, 4, 5], when deleting [2, 4, 5] returns [1, 3] on [1, 2, 3, 4, 5], when deleting [3, 4, 5] returns [1, 2] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 3] returns [4, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 4] returns [3, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 5] returns [3, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 6] returns [3, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 4] returns [2, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 5] returns [2, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 6] returns [2, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 4, 5] returns [2, 3, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 4, 6] returns [2, 3, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 5, 6] returns [2, 3, 4] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 4] returns [1, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 5] returns [1, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 6] returns [1, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [2, 4, 5] returns [1, 3, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 4, 6] returns [1, 3, 5] on [1, 2, 3, 4, 5, 6], when deleting [2, 5, 6] returns [1, 3, 4] on [1, 2, 3, 4, 5, 6], when deleting [3, 4, 5] returns [1, 2, 6] on [1, 2, 3, 4, 5, 6], when deleting [3, 4, 6] returns [1, 2, 5] on [1, 2, 3, 4, 5, 6], when deleting [3, 5, 6] returns [1, 2, 4] on [1, 2, 3, 4, 5, 6], when deleting [4, 5, 6] returns [1, 2, 3] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 3] returns [4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 4] returns [3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 5] returns [3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 6] returns [3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 7] returns [3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 4] returns [2, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 5] returns [2, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 6] returns [2, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 7] returns [2, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 5] returns [2, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 6] returns [2, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 7] returns [2, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 5, 6] returns [2, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 5, 7] returns [2, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 6, 7] returns [2, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 4] returns [1, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 5] returns [1, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 6] returns [1, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 7] returns [1, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 5] returns [1, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 6] returns [1, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 7] returns [1, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 5, 6] returns [1, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 5, 7] returns [1, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 6, 7] returns [1, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 5] returns [1, 2, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 6] returns [1, 2, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 7] returns [1, 2, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 5, 6] returns [1, 2, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 5, 7] returns [1, 2, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 6, 7] returns [1, 2, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 5, 6] returns [1, 2, 3, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 5, 7] returns [1, 2, 3, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 6, 7] returns [1, 2, 3, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [5, 6, 7] returns [1, 2, 3, 4] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 9] returns [3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 9] returns [2, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 9] returns [2, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 9] returns [2, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 9] returns [2, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 7, 9] returns [2, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 8, 9] returns [2, 3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 9] returns [1, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 9] returns [1, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 9] returns [1, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 9] returns [1, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 7, 9] returns [1, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 8, 9] returns [1, 3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 9] returns [1, 2, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 9] returns [1, 2, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 9] returns [1, 2, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 7, 9] returns [1, 2, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 8, 9] returns [1, 2, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 9] returns [1, 2, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 9] returns [1, 2, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 7, 9] returns [1, 2, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 8, 9] returns [1, 2, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 9] returns [1, 2, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 7, 9] returns [1, 2, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 8, 9] returns [1, 2, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 7, 9] returns [1, 2, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 8, 9] returns [1, 2, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [7, 8, 9] returns [1, 2, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 9] returns [3, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 10] returns [3, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 9] returns [2, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 10] returns [2, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 9] returns [2, 3, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 10] returns [2, 3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 9] returns [2, 3, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 10] returns [2, 3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 9] returns [2, 3, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 10] returns [2, 3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 9] returns [2, 3, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 10] returns [2, 3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 8, 9] returns [2, 3, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 8, 10] returns [2, 3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 9, 10] returns [2, 3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 9] returns [1, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 10] returns [1, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 9] returns [1, 3, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 10] returns [1, 3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 9] returns [1, 3, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 10] returns [1, 3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 9] returns [1, 3, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 10] returns [1, 3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 9] returns [1, 3, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 10] returns [1, 3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 8, 9] returns [1, 3, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 8, 10] returns [1, 3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 9, 10] returns [1, 3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 9] returns [1, 2, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 10] returns [1, 2, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 9] returns [1, 2, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 10] returns [1, 2, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 9] returns [1, 2, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 10] returns [1, 2, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 9] returns [1, 2, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 10] returns [1, 2, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 8, 9] returns [1, 2, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 8, 10] returns [1, 2, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 9, 10] returns [1, 2, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 9] returns [1, 2, 3, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 10] returns [1, 2, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 9] returns [1, 2, 3, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 10] returns [1, 2, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 9] returns [1, 2, 3, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 10] returns [1, 2, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 8, 9] returns [1, 2, 3, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 8, 10] returns [1, 2, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 9, 10] returns [1, 2, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 9] returns [1, 2, 3, 4, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 10] returns [1, 2, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 9] returns [1, 2, 3, 4, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 10] returns [1, 2, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 8, 9] returns [1, 2, 3, 4, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 8, 10] returns [1, 2, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 9, 10] returns [1, 2, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 9] returns [1, 2, 3, 4, 5, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 10] returns [1, 2, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 8, 9] returns [1, 2, 3, 4, 5, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 8, 10] returns [1, 2, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 9, 10] returns [1, 2, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 8, 9] returns [1, 2, 3, 4, 5, 6, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 8, 10] returns [1, 2, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 9, 10] returns [1, 2, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [8, 9, 10] returns [1, 2, 3, 4, 5, 6, 7] #delete? with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns false Immutable::SortedSet #difference for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] #subtract for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] #- for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] Immutable::SortedSet #disjoint? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["D", "E"] returns true for ["F", "G", "H", "I"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["D", "E", "F", "G"] and ["A", "B", "C"] returns true Immutable::SortedSet #drop 0 from [] preserves the original returns [] 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns [] 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] 1 from ["A", "B", "C"] preserves the original returns ["B", "C"] 2 from ["A", "B", "C"] preserves the original returns ["C"] 3 from ["A", "B", "C"] preserves the original returns [] when argument is zero returns self when the set has a custom order maintains the custom order keeps the comparator even when set is cleared when called on a subclass should return an instance of the subclass Immutable::SortedSet #drop_while on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator on ["A", "B", "C", "D", "E", "F", "G"] with a block preserves the original returns ["C", "D", "E", "F", "G"] without a block returns an Enumerator Immutable::SortedSet #each with no block returns an Enumerator with a block returns self iterates over the items in order Immutable::SortedSet #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false .empty returns the canonical empty set from a subclass returns an empty instance of the subclass Immutable::SortedSet #eql? when comparing to a standard set returns false when comparing to a arbitrary object returns false when comparing to an Immutable::Set returns false when comparing with a subclass of Immutable::SortedSet returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true with the same values, but a different sort order returns false Immutable::SortedSet #exclusion for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["B", "C", "D"] returns ["A", "D"] for ["A", "B", "C"] and ["D", "E", "F"] returns ["A", "B", "C", "D", "E", "F"] #^ for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["B", "C", "D"] returns ["A", "D"] for ["A", "B", "C"] and ["D", "E", "F"] returns ["A", "B", "C", "D", "E", "F"] Immutable::SortedSet #fetch gives precedence to default block over default argument if passed both with no default provided when the index exists returns the value at the index when the key does not exist raises an IndexError with a default value when the index exists returns the value at the index when the index does not exist returns the default value with a default block when the index exists returns the value at the index when the index does not exist invokes the block with the missing index as parameter Immutable::SortedSet #find_index looking for "A" in [] without block returns nil looking for "A" in [] with block returns nil looking for nil in [] with block returns nil looking for "A" in ["A"] without block returns 0 looking for "A" in ["A"] with block returns 0 looking for "B" in ["A"] without block returns nil looking for "B" in ["A"] with block returns nil looking for nil in ["A"] with block returns nil looking for "A" in ["A", "B", "C"] without block returns 0 looking for "A" in ["A", "B", "C"] with block returns 0 looking for "B" in ["A", "B", "C"] without block returns 1 looking for "B" in ["A", "B", "C"] with block returns 1 looking for "C" in ["A", "B", "C"] without block returns 2 looking for "C" in ["A", "B", "C"] with block returns 2 looking for "D" in ["A", "B", "C"] without block returns nil looking for "D" in ["A", "B", "C"] with block returns nil looking for 1 in 0..1 without block returns 1 looking for 1 in 0..1 with block returns 1 looking for 5 in 0..10 without block returns 5 looking for 5 in 0..10 with block returns 5 looking for 10 in 0..10 without block returns 10 looking for 10 in 0..10 with block returns 10 looking for 2 in [2] without block returns 0 looking for 2 in [2] with block returns 0 looking for 2.0 in [2] without block returns 0 looking for 2.0 in [2] with block returns 0 looking for 2.0 in [2.0] without block returns 0 looking for 2.0 in [2.0] with block returns 0 looking for 2 in [2.0] without block returns 0 looking for 2 in [2.0] with block returns 0 #index looking for "A" in [] without block returns nil looking for "A" in [] with block returns nil looking for nil in [] with block returns nil looking for "A" in ["A"] without block returns 0 looking for "A" in ["A"] with block returns 0 looking for "B" in ["A"] without block returns nil looking for "B" in ["A"] with block returns nil looking for nil in ["A"] with block returns nil looking for "A" in ["A", "B", "C"] without block returns 0 looking for "A" in ["A", "B", "C"] with block returns 0 looking for "B" in ["A", "B", "C"] without block returns 1 looking for "B" in ["A", "B", "C"] with block returns 1 looking for "C" in ["A", "B", "C"] without block returns 2 looking for "C" in ["A", "B", "C"] with block returns 2 looking for "D" in ["A", "B", "C"] without block returns nil looking for "D" in ["A", "B", "C"] with block returns nil looking for 1 in 0..1 without block returns 1 looking for 1 in 0..1 with block returns 1 looking for 5 in 0..10 without block returns 5 looking for 5 in 0..10 with block returns 5 looking for 10 in 0..10 without block returns 10 looking for 10 in 0..10 with block returns 10 looking for 2 in [2] without block returns 0 looking for 2 in [2] with block returns 0 looking for 2.0 in [2] without block returns 0 looking for 2.0 in [2] with block returns 0 looking for 2.0 in [2.0] without block returns 0 looking for 2.0 in [2.0] with block returns 0 looking for 2 in [2.0] without block returns 0 looking for 2 in [2.0] with block returns 0 Immutable::SortedSet #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" on ["Z", "Y", "X"] returns "X" Immutable::SortedSet #from when called without a block returns a sorted set of all items equal to or greater than the argument when called with a block yields all the items equal to or greater than than the argument on an empty set returns an empty set with an argument higher than all the values in the set returns an empty set Immutable::SortedSet #group_by with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass #group with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass #classify with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass Immutable::SortedSet #include? returns true for an existing value (1) returns true for an existing value (2) returns true for an existing value (3) returns true for an existing value (4.0) returns false for a non-existing value uses #<=> for equality #member? returns true for an existing value (1) returns true for an existing value (2) returns true for an existing value (3) returns true for an existing value (4.0) returns false for a non-existing value uses #<=> for equality Immutable::SortedSet #inspect on [] returns "Immutable::SortedSet[]" returns a string which can be eval'd to get an equivalent set on ["A"] returns "Immutable::SortedSet[\"A\"]" returns a string which can be eval'd to get an equivalent set on ["C", "B", "A"] returns "Immutable::SortedSet[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent set from a subclass returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set Immutable::SortedSet #intersect? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["D", "E"] returns false for ["F", "G", "H", "I"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["D", "E", "F", "G"] and ["A", "B", "C"] returns false Immutable::SortedSet #intersection for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns [] for [] and ["A"] returns [] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and ["B"] returns ["B"] for ["B"] and ["A", "B", "C"] returns ["B"] for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"] for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"] for ["A", "M", "T", "X"] and ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] returns ["M", "T"] for ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] and ["A", "M", "T", "X"] returns ["M", "T"] #& for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns [] for [] and ["A"] returns [] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and ["B"] returns ["B"] for ["B"] and ["A", "B", "C"] returns ["B"] for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"] for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"] for ["A", "M", "T", "X"] and ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] returns ["M", "T"] for ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] and ["A", "M", "T", "X"] returns ["M", "T"] Immutable::SortedSet #last with an empty set returns the last item with a single item set returns the last item with a multi-item set returns the last item Immutable::SortedSet #map when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values filters out duplicates with no block returns an Enumerator on a set ordered by a comparator returns a new set with the mapped values filters out duplicates #collect when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values filters out duplicates with no block returns an Enumerator on a set ordered by a comparator returns a new set with the mapped values filters out duplicates Immutable::SortedSet #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by index after loading raises a TypeError if set has a custom sort order Immutable::SortedSet #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::SortedSet #min on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" on [1, 2, 3, 4, 5] returns 1 on [0, -0.0, 2.2, -4, -4.2] returns -4.2 Immutable::SortedSet .new accepts a single enumerable argument and creates a new sorted set also works with a Range doesn't mutate the initializer doesn't change if the initializer is later mutated is amenable to overriding of #initialize accepts a block with arity 1 accepts a block with arity 2 can use a block produced by Symbol#to_proc filters out duplicates when passed a comparator with arity 2 still filters out duplicates still doesn't mutate the initializer still doesn't change if the initializer is later mutated when passed a block with arity 1 still filters out duplicates still doesn't mutate the initializer still doesn't change if the initializer is later mutated from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new sorted set filters out duplicate items Immutable::SortedSet #reverse_each with no block returns an Enumerator with a block returns self iterates over the items in order Immutable::SortedSet #sample returns a randomly chosen item Immutable::SortedSet #select when everything matches preserves the original returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class #find_all when everything matches preserves the original returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class Immutable::SortedSet #size returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] #length returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] Immutable::SortedSet #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the sorted_set when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed an empty Range does not lose custom sort order when passed a length of zero does not lose custom sort order when passed a subclass of Range works the same as with a Range on a subclass of SortedSet with index and count or a range, returns an instance of the subclass #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the sorted_set when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed an empty Range does not lose custom sort order when passed a length of zero does not lose custom sort order when passed a subclass of Range works the same as with a Range on a subclass of SortedSet with index and count or a range, returns an instance of the subclass Immutable::SortedSet #sort on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] #sort_by on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] sort on a SortedSet with custom sort order returns a SortedSet with the natural sort order Immutable::SortedSet #subset? for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #proper_subset? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false Immutable::SortedSet #superset? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #proper_superset? for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true Immutable::SortedSet #take 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] when argument is at least size of receiver returns self when the set has a custom order maintains the custom order keeps the comparator even when set is cleared when called on a subclass should return an instance of the subclass Immutable::SortedSet #take_while on [] with a block returns [] preserves the original without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original without a block returns an Enumerator Immutable::SortedSet #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values Immutable::SortedSet #union for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #| for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #+ for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #merge for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] union filters out duplicates when passed an Array doesn't mutate an Array which is passed in on a set ordered by a comparator still filters out duplicates when passed an Array still doesn't mutate an Array which is passed in Immutable::SortedSet #up_to when called without a block returns a sorted set of all items equal to or less than the argument when called with a block yields all the items equal to or less than than the argument on an empty set returns an empty set with an argument less than all the values in the set returns an empty set Immutable::SortedSet .uniq_by_comparator! can handle empty arrays can handle arrays with 1 element can handle arrays with 2 elements and no dupes can handle arrays with 2 elements and dupes can handle arrays with lots of elements works with funny comparators Immutable::SortedSet #values_at accepts any number of indices, and returns a sorted_set of items at those indices when passed invalid indices filters them out when passed no arguments returns an empty sorted_set from a subclass returns an instance of the subclass Immutable::Vector #add with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass #<< with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass #push with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass Immutable::Vector #any? when created with no values with a block returns false with a block returns false when created with values with a block that returns true returns true with a block that doesn't return true returns false without a block with some values that are truthy returns true with all values that are falsey returns false Immutable::Vector #assoc searches for a 2-element array with a given 1st item returns nil if a matching 1st item is not found uses #== to compare 1st items with provided object skips elements which are not indexable #rassoc searches for a 2-element array with a given 2nd item returns nil if a matching 2nd item is not found uses #== to compare 2nd items with provided object skips elements which are not indexable Immutable::Vector #bsearch with a block which returns false for elements below desired position, and true for those at/above returns the first element for which the predicate is true if the block always returns false returns nil if the block always returns true returns the first element with a block which returns a negative number for elements below desired position, zero for the right element, and positive for those above returns the element for which the block returns zero if the block always returns positive returns nil if the block always returns negative returns nil if the block returns sometimes positive, sometimes negative, but never zero returns nil if not passed a block returns an Enumerator on an empty vector returns nil Immutable::Vector #clear on [] preserves the original returns an empty vector from a subclass returns an instance of the subclass on ["A"] preserves the original returns an empty vector from a subclass returns an instance of the subclass on ["A", "B", "C"] preserves the original returns an empty vector from a subclass returns an instance of the subclass Immutable::Vector #combination works on many combinations of input leaves the original unmodified with a block returns self with no block returns an Enumerator when passed an argument which is out of bounds yields nothing and returns self when passed an argument zero yields an empty array when passed an argument equal to the vector's length yields self as an array when passed an argument 1 yields each item in the vector, as single-item vectors when passed another integral argument yields all combinations of the given length on an empty vector works the same Immutable::Vector #compact returns a new Vector with all nils removed doesn't remove false on an empty vector returns self from a subclass returns an instance of the subclass Immutable::Vector #<=> with [] and [1] returns -1 with [1] and [] returns 1 with [] and [] returns 0 with [1] and [2] returns -1 with [2] and [1] returns 1 with [1] and [1] returns 0 with [1] and [1, 2] returns -1 with [1, 2] and [1] returns 1 with [1] and [1] returns 0 with [2, 3, 4] and [3, 4, 5] returns -1 with [3, 4, 5] and [2, 3, 4] returns 1 with [2, 3, 4] and [2, 3, 4] returns 0 with [[0]] and [[1]] returns -1 with [[1]] and [[0]] returns 1 with [[0]] and [[0]] returns 0 Immutable::Vector #+ preserves the original appends the elements in the other enumerable on a 1-item vector works the same on a 31-item vector works the same on a 32-item vector works the same on a 33-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same #concat preserves the original appends the elements in the other enumerable on a 1-item vector works the same on a 31-item vector works the same on a 32-item vector works the same on a 33-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same Immutable::Vector on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self Immutable::Vector #count returns the number of elements returns the number of elements that equal the argument returns the number of element for which the block evaluates to true Immutable::Vector #delete_at removes the element at the specified index makes no modification if the index is out of range works when deleting last item at boundary where vector trie needs to get shallower works on an empty vector works on a vector with 1 item works on a vector with 32 items has the right size and contents after many deletions Immutable::Vector #delete removes elements that are #== to the argument on an empty vector returns self on a subclass of Vector returns an instance of the subclass Immutable::Vector #dig returns value at the index with one argument returns value at index in nested arrays raises an error when indexing deeper than possible returns nil if you index past the end of an array raises an error when indexing with a key vectors don't understand Immutable::Vector #drop raises an ArgumentError if number of elements specified is negative 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns [] 1 from ["A"] preserves the original returns [] 0 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] 2 from ["A", "B", "C"] preserves the original returns ["C"] 3 from 1..32 preserves the original returns 4..32 32 from 1..33 preserves the original returns [33] when number of elements specified is zero returns self Immutable::Vector #drop_while returns an empty vector if block is always true stops dropping items if block returns nil stops dropping items if block returns false on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator on an empty vector returns an empty vector Immutable::Vector #each_index with a block yields all the valid indices into the vector returns self without a block returns an Enumerator on an empty vector doesn't yield anything on a 1-item vector yields all valid indices on a 2-item vector yields all valid indices on a 10-item vector yields all valid indices on a 31-item vector yields all valid indices on a 32-item vector yields all valid indices on a 33-item vector yields all valid indices on a 1000-item vector yields all valid indices on a 1024-item vector yields all valid indices on a 1025-item vector yields all valid indices Immutable::Vector #each with no block returns an Enumerator on a 31-item vector with a block returns self yields all the items iterates over the items in order on a 32-item vector with a block returns self yields all the items iterates over the items in order on a 33-item vector with a block returns self yields all the items iterates over the items in order on a 1023-item vector with a block returns self yields all the items iterates over the items in order on a 1024-item vector with a block returns self yields all the items iterates over the items in order on a 1025-item vector with a block returns self yields all the items iterates over the items in order on an empty vector doesn't yield anything Immutable::Vector #each_with_index with no block returns an Enumerator on a 1-item vector with a block returns self iterates over the items in order on a 2-item vector with a block returns self iterates over the items in order on a 31-item vector with a block returns self iterates over the items in order on a 32-item vector with a block returns self iterates over the items in order on a 33-item vector with a block returns self iterates over the items in order on a 1023-item vector with a block returns self iterates over the items in order on a 1024-item vector with a block returns self iterates over the items in order on a 1025-item vector with a block returns self iterates over the items in order on an empty vector doesn't yield anything Immutable::Vector #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false .empty returns the canonical empty vector from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Hash Immutable::Vector #eql returns false when comparing with an array with the same contents returns false when comparing with an arbitrary object returns false when comparing an empty vector with an empty array returns false when comparing with a subclass of Immutable::Vector #== returns true when comparing with an array with the same contents returns false when comparing with an arbitrary object returns true when comparing an empty vector with an empty array returns true when comparing with a subclass of Immutable::Vector works on larger vectors #eql? returns true for vectors [] and [] for vectors [] and [] returns false for vectors [] and [nil] for vectors [nil] and [] returns false for vectors ["A"] and [] for vectors [] and ["A"] returns true for vectors ["A"] and ["A"] for vectors ["A"] and ["A"] returns false for vectors ["A"] and ["B"] for vectors ["B"] and ["A"] returns false for vectors ["A", "B"] and ["A"] for vectors ["A"] and ["A", "B"] returns true for vectors ["A", "B", "C"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["A", "B", "C"] returns false for vectors ["C", "A", "B"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["C", "A", "B"] #== returns true for vectors [] and [] for vectors [] and [] returns false for vectors [] and [nil] for vectors [nil] and [] returns false for vectors ["A"] and [] for vectors [] and ["A"] returns true for vectors ["A"] and ["A"] for vectors ["A"] and ["A"] returns false for vectors ["A"] and ["B"] for vectors ["B"] and ["A"] returns false for vectors ["A", "B"] and ["A"] for vectors ["A"] and ["A", "B"] returns true for vectors ["A", "B", "C"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["A", "B", "C"] returns false for vectors ["C", "A", "B"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["C", "A", "B"] Immutable::Vector #fetch gives precedence to default block over default argument if passed both with no default provided when the index exists returns the value at the index when the key does not exist raises an IndexError with a default value when the index exists returns the value at the index when the index does not exist returns the default value with a default block when the index exists returns the value at the index when the index does not exist invokes the block with the missing index as parameter Immutable::Vector #fill can replace a range of items at the beginning of a vector can replace a range of items in the middle of a vector can replace a range of items at the end of a vector can replace all the items in a vector can fill past the end of the vector behaves like Array#fill, on a variety of inputs with 1 argument replaces all the items in the vector by default with 2 arguments replaces up to the end of the vector by default when index and length are 0 leaves the vector unmodified when expanding a vector past boundary where vector trie needs to deepen works the same on a 1000-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same on a 2000-item vector works the same Immutable::Vector #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" on 1..32 returns 1 Immutable::Vector #flat_map with an empty vector returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a block that returns an empty vector returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a vector of one item returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a vector of multiple items returns the flattened values as an Immutable::Vector returns an Immutable::Vector Immutable::Vector #flatten recursively flattens nested vectors into containing vector flattens nested arrays as well leaves the original unmodified with an integral argument only flattens down to the specified depth with an argument of zero returns self on a subclass returns an instance of the subclass on a vector with no nested vectors returns an unchanged vector on a Vector larger than 32 items initialized with Vector.new returns an unchanged vector Immutable::Vector #get when empty always returns nil when not empty with a positive index within the absolute bounds of the vector returns the value at the specified index from the head outside the absolute bounds of the vector returns nil with a negative index within the absolute bounds of the vector returns the value at the specified index from the tail outside the absolute bounds of the vector returns nil on a 1-item vector works correctly, even after various addings and removings on a 10-item vector works correctly, even after various addings and removings on a 31-item vector works correctly, even after various addings and removings on a 32-item vector works correctly, even after various addings and removings on a 33-item vector works correctly, even after various addings and removings on a 1024-item vector works correctly, even after various addings and removings on a 1025-item vector works correctly, even after various addings and removings on a 2000-item vector works correctly, even after various addings and removings #at when empty always returns nil when not empty with a positive index within the absolute bounds of the vector returns the value at the specified index from the head outside the absolute bounds of the vector returns nil with a negative index within the absolute bounds of the vector returns the value at the specified index from the tail outside the absolute bounds of the vector returns nil on a 1-item vector works correctly, even after various addings and removings on a 10-item vector works correctly, even after various addings and removings on a 31-item vector works correctly, even after various addings and removings on a 32-item vector works correctly, even after various addings and removings on a 33-item vector works correctly, even after various addings and removings on a 1024-item vector works correctly, even after various addings and removings on a 1025-item vector works correctly, even after various addings and removings on a 2000-item vector works correctly, even after various addings and removings Immutable::Vector #group_by returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Vector[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Vector[1, 3], false=>Immutable::Vector[2, 4]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Vector[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Vector[1], 2=>Immutable::Vector[2], 3=>Immutable::Vector[3], 4=>Immutable::Vector[4]}] on an empty vector returns an empty hash from a subclass returns an Hash whose values are instances of the subclass Immutable::Vector #include? on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on ["A", "B", false] returns true on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true #member? on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on ["A", "B", false] returns true on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true Immutable::Vector #insert can add items at the beginning of a vector can add items in the middle of a vector can add items at the end of a vector can add items past the end of a vector accepts a negative index, which counts back from the end of the vector raises IndexError if a negative index is too great works when adding an item past boundary when vector trie needs to deepen works when adding to an empty Vector has the right size and contents after many insertions Immutable::Vector #inspect with an empty array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector with a single item array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector with a multi-item array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector from a subclass returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector Immutable::Vector #join with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) on ["A", "B", "C"] returns "A**B**C" Immutable::Vector #last with an empty vector returns the last item with a single item vector returns the last item with a multi-item vector returns the last item with a 31-item vector returns the last item with a 32-item vector returns the last item with a 33-item vector returns the last item with a 1023-item vector returns the last item with a 1024-item vector returns the last item with a 1025-item vector returns the last item Immutable::Vector #length with an empty vector returns the values with a single item vector returns the values with a multi-item vector returns the values with a 31-item vector returns the values with a 32-item vector returns the values with a 33-item vector returns the values with a 1023-item vector returns the values with a 1024-item vector returns the values with a 1025-item vector returns the values Immutable::Vector #<< with a empty array adding a single item preserves the original ltlts the item to the vector with a single-item array adding a different item preserves the original ltlts the item to the vector with a single-item array adding a duplicate item preserves the original ltlts the item to the vector with a 31-item vector adding a different item preserves the original ltlts the item to the vector with a 32-item vector adding a different item preserves the original ltlts the item to the vector with a 33-item vector adding a different item preserves the original ltlts the item to the vector with a 1023-item vector adding a different item preserves the original ltlts the item to the vector with a 1024-item vector adding a different item preserves the original ltlts the item to the vector with a 1025-item vector adding a different item preserves the original ltlts the item to the vector from a subclass returns an instance of the subclass Immutable::Vector #map when empty returns self when not empty with a block preserves the original values returns a new vector with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass on a large vector works #collect when empty returns self when not empty with a block preserves the original values returns a new vector with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass on a large vector works Immutable::Vector #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by index after loading Immutable::Vector #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::Vector #min with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::Vector #* raises a TypeError if passed nil raises an ArgumentError if passed no arguments with a String argument acts just like #join with an Integer argument concatenates n copies of the array raises an ArgumentError if integer is negative works on large vectors with a subclass of Vector returns an instance of the subclass Immutable::Vector .new accepts a single enumerable argument and creates a new vector makes a defensive copy of a non-frozen mutable Array passed in is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new vector Immutable::Vector #partition on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::Vector #permutation handles duplicate elements correctly leaves the original unmodified behaves like Array#permutation without a block or arguments returns an Enumerator of all permutations without a block, but with integral argument returns an Enumerator of all permutations of given length with a block returns self and no argument yields all permutations and an integral argument yields all permutations of the given length on an empty vector yields the empty permutation with an argument of zero yields the empty permutation with a length greater than the size of the vector yields no permutations Immutable::Vector #pop on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["A", "B"] on 1..32 preserves the original returns 1..31 on 1..33 preserves the original returns 1..32 Immutable::Vector #product when passed no arguments multiplies all items in vector when passed one or more vectors when passed a block yields an array for each combination of items from the vectors returns self when not passed a block returns the cartesian product in an array when one of the arguments is empty returns an empty array when the receiver is empty returns an empty array when passed one or more Arrays also calculates the cartesian product correctly Immutable::Vector #reduce on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::Vector #reject works with a variety of inputs on [] with a block returns [] without a block returns an Enumerator on ["A"] with a block returns ["A"] without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] without a block returns an Enumerator #delete_if works with a variety of inputs on [] with a block returns [] without a block returns an Enumerator on ["A"] with a block returns ["A"] without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] without a block returns an Enumerator Immutable::Vector #repeated_combination leaves the original unmodified behaves like Array#repeated_combination with no block returns an Enumerator with a block returns self with a negative argument yields nothing and returns self with a zero argument yields an empty array with a argument of 1 yields each item in the vector, as single-item vectors on an empty vector, with an argument greater than zero yields nothing with a positive argument, greater than 1 yields all combinations of the given size (where a single element can appear more than once in a row) Immutable::Vector #repeated_permutation handles duplicate elements correctly allows permutations larger than the number of elements leaves the original unmodified behaves like Array#repeated_permutation without a block and without argument returns an Enumerator of all repeated permutations with an integral argument returns an Enumerator of all repeated permutations of the given length with a block returns self on an empty vector yields the empty permutation with an argument of zero yields the empty permutation with no argument yields all repeated permutations with a positive integral argument yields all repeated permutations of the given length Immutable::Vector #reverse_each on a 2-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 31-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 32-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 33-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1000-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1024-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1025-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 2000-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator Immutable::Vector #reverse on [] returns [] on [1] returns [1] on [1, 2] returns [2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] returns [32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33] returns [33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100] returns [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024] returns [1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1014, 1013, 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, 979, 978, 977, 976, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905, 904, 903, 902, 901, 900, 899, 898, 897, 896, 895, 894, 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 879, 878, 877, 876, 875, 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, 857, 856, 855, 854, 853, 852, 851, 850, 849, 848, 847, 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, 833, 832, 831, 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] Immutable::Vector #rindex when passed an object present in the vector returns the last index where the object is present when passed an object not present in the vector returns nil with a block returns the last index of an object which the predicate is true for without an argument OR block returns an Enumerator Immutable::Vector #rotate leaves the original unmodified when passed no argument returns a new vector with the first element moved to the end with an integral argument n returns a new vector with the first (n % size) elements moved to the end with a floating-point argument n coerces the argument to integer using to_int with a non-numeric argument raises a TypeError with an argument of zero returns self with an argument equal to the vector's size returns self on a 31-item vector behaves like Array#rotate on a 32-item vector behaves like Array#rotate on a 33-item vector behaves like Array#rotate on a 1000-item vector behaves like Array#rotate on a 1023-item vector behaves like Array#rotate on a 1024-item vector behaves like Array#rotate on a 1025-item vector behaves like Array#rotate from a subclass returns an instance of the subclass Immutable::Vector #sample returns a randomly chosen item Immutable::Vector #select works with a variety of inputs with a block preserves the original returns a vector with the matching values with no block returns an Enumerator when nothing matches preserves the original returns an empty vector on an empty vector returns self from a subclass returns an instance of the subclass #find_all works with a variety of inputs with a block preserves the original returns a vector with the matching values with no block returns an Enumerator when nothing matches preserves the original returns an empty vector on an empty vector returns self from a subclass returns an instance of the subclass Immutable::Vector #set when empty WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:11:in `block (4 levels) in '. raises an error for index -1 allows indexes 0 and 1 to be set when not empty with a block and a positive index within the absolute bounds of the vector passes the current value to the block replaces the value with the result of the block supports to_proc methods just past the end of the vector passes nil to the block and adds a new value further outside the bounds of the vector passes nil to the block, fills up missing nils, and adds a new value and a negative index within the absolute bounds of the vector passes the current value to the block replaces the value with the result of the block supports to_proc methods outside the absolute bounds of the vector WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:75:in `block (7 levels) in '. raises an error with a value and a positive index within the absolute bounds of the vector preserves the original sets the new value at the specified index just past the end of the vector adds a new value outside the absolute bounds of the vector fills up with nils with a negative index preserves the original sets the new value at the specified index outside the absolute bounds of the vector WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:125:in `block (6 levels) in '. raises an error from a subclass returns an instance of the subclass on a 10-item vector works correctly on a 31-item vector works correctly on a 32-item vector works correctly on a 33-item vector works correctly on a 1000-item vector works correctly on a 1023-item vector works correctly on a 1024-item vector works correctly on a 1025-item vector works correctly on a 2000-item vector works correctly with an identical value to an existing item on a 1-item vector returns self on a 2-item vector returns self on a 5-item vector returns self on a 31-item vector returns self on a 32-item vector returns self on a 33-item vector returns self on a 100-item vector returns self on a 200-item vector returns self Immutable::Vector #shift on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on 1..31 preserves the original returns 2..31 on 1..32 preserves the original returns 2..32 on 1..33 preserves the original returns 2..33 Immutable::Vector #shuffle returns the same values, in a usually different order leaves the original unchanged from a subclass returns an instance of the subclass on a 32-item vector works correctly on a 33-item vector works correctly on a 1023-item vector works correctly on a 1024-item vector works correctly on a 1025-item vector works correctly Immutable::Vector #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the vector when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range on a subclass of Vector with index and count or a range, returns an instance of the subclass #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the vector when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range on a subclass of Vector with index and count or a range, returns an instance of the subclass Immutable::Vector #sort on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] on a 10-item vector behaves like Arraysort on a 31-item vector behaves like Arraysort on a 32-item vector behaves like Arraysort on a 33-item vector behaves like Arraysort on a 1023-item vector behaves like Arraysort on a 1024-item vector behaves like Arraysort on a 1025-item vector behaves like Arraysort #sort_by on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] on a 10-item vector behaves like Arraysort_by on a 31-item vector behaves like Arraysort_by on a 32-item vector behaves like Arraysort_by on a 33-item vector behaves like Arraysort_by on a 1023-item vector behaves like Arraysort_by on a 1024-item vector behaves like Arraysort_by on a 1025-item vector behaves like Arraysort_by Immutable::Vector #sum on [] returns 0 on [2] returns 2 on [1, 3, 5, 7, 11] returns 27 Immutable::Vector #take 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] 1 from 1..32 preserves the original returns [1] 32 from 1..33 preserves the original returns 1..32 40 from 1..100 preserves the original returns 1..40 when number of elements specified is identical to size returns self when number of elements specified is bigger than size returns self Immutable::Vector #take_while on [] with a block returns [] preserves the original without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original without a block returns an Enumerator Immutable::Vector #to_a with an empty vector returns the values with an single item vector returns the values with an multi-item vector returns the values with a 10-item vector returns the values with a 31-item vector returns the values with a 32-item vector returns the values with a 33-item vector returns the values with a 1000-item vector returns the values with a 1023-item vector returns the values with a 1024-item vector returns the values with a 1025-item vector returns the values Immutable::Vector #to_ary converts using block parameters converts using method arguments converts using splat Immutable::Vector #to_list on [] returns a list the returned list has the correct length contains all values on ["A"] returns a list the returned list has the correct length contains all values on ["A", "B", "C"] returns a list the returned list has the correct length contains all values Immutable::Vector #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values on 1..10 returns a set with the same values on 1..32 returns a set with the same values on 1..33 returns a set with the same values on 1..1000 returns a set with the same values Immutable::Vector #transpose takes a vector of vectors and transposes rows and columns raises an IndexError if the vectors are not of the same length also works on Vectors of Arrays on 10-item vectors behaves like Array#transpose on 31-item vectors behaves like Array#transpose on 32-item vectors behaves like Array#transpose on 33-item vectors behaves like Array#transpose on 1000-item vectors behaves like Array#transpose on 1023-item vectors behaves like Array#transpose on 1024-item vectors behaves like Array#transpose on 1025-item vectors behaves like Array#transpose on 2000-item vectors behaves like Array#transpose on a subclass of Vector returns instances of the subclass if an item does not respond to #size and #[] raises TypeError Immutable::Vector #uniq returns a vector with no duplicates leaves the original unmodified uses #eql? semantics also uses #hash when determining which values are duplicates keeps the first of each group of duplicate values when passed a block uses the return value of the block to determine which items are duplicate on a vector with no duplicates returns an unchanged vector if the vector has more than 32 elements and is initialized with Vector.new returns an unchanged vector on a 10-item vector behaves like Array#uniq on a 31-item vector behaves like Array#uniq on a 32-item vector behaves like Array#uniq on a 33-item vector behaves like Array#uniq on a 1000-item vector behaves like Array#uniq on a 1023-item vector behaves like Array#uniq on a 1024-item vector behaves like Array#uniq on a 1025-item vector behaves like Array#uniq on a 2000-item vector behaves like Array#uniq from a subclass returns an instance of the subclass Immutable::Vector #unshift on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] on 1..31 with 0 preserves the original returns 0..31 on 1..32 with 0 preserves the original returns 0..32 on 1..33 with 0 preserves the original returns 0..33 Immutable::Vector #update_in with one level on existing key passes the value to the block replaces the value with the result of the block should preserve the original with multi-level vectors on existing keys passes the value to the block replaces the value with the result of the block should preserve the original with multi-level creating sub-hashes when keys don't exist passes nil to the block creates subhashes on the way to set the value with multi-level including hash with existing keys passes the value to the block replaces the value with the result of the block should preserve the original with empty key_path raises ArguemntError Immutable::Vector #values_at accepts any number of indices, and returns a vector of items at those indices when passed invalid indices fills in with nils when passed no arguments returns an empty vector from a subclass returns an instance of the subclass Immutable::Vector #zip with a block yields arrays of one corresponding element from each input sequence fills in the missing values with nils returns nil can handle multiple inputs, of different classes without a block returns a vector of arrays (one corresponding element from each input sequence) on 10-item vectors behaves like Array#zip on 31-item vectors behaves like Array#zip on 32-item vectors behaves like Array#zip on 33-item vectors behaves like Array#zip on 1000-item vectors behaves like Array#zip on 1023-item vectors behaves like Array#zip on 1024-item vectors behaves like Array#zip on 1025-item vectors behaves like Array#zip from a subclass returns an instance of the subclass Immutable Hash can be loaded separately Set can be loaded separately Vector can be loaded separately List can be loaded separately SortedSet can be loaded separately Deque can be loaded separately Top 10 slowest examples (3.23 seconds, 31.0% of total time): Immutable::List#each_chunk on a really big list doesn't run out of stack 0.60002 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List#partition calls the passed block only once for each item, even with multiple threads 0.47634 seconds ./spec/lib/immutable/list/partition_spec.rb:38 Immutable::List#each_slice on a really big list doesn't run out of stack 0.41894 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List ensures each node of a lazy list will only be realized on ONE thread, even when accessed by multiple threads 0.35447 seconds ./spec/lib/immutable/list/multithreading_spec.rb:5 Immutable::Set#marshal_dump/#marshal_load is still possible to test items by key after loading 0.32587 seconds ./spec/lib/immutable/set/marshal_spec.rb:23 Immutable::List#hash on a really big list doesn't run out of stack 0.31016 seconds ./spec/lib/immutable/list/hash_spec.rb:6 Immutable::Hash#length has the correct size after lots of addings and removings 0.19527 seconds ./spec/lib/immutable/hash/size_spec.rb:38 Immutable::List#eql? on a really big list doesn't run out of stack 0.18929 seconds ./spec/lib/immutable/list/eql_spec.rb:6 Immutable::List#all? on a really big list doesn't run out of stack 0.18642 seconds ./spec/lib/immutable/list/all_spec.rb:8 Immutable::Deque#marshal_dump/#marshal_load can survive dumping and loading into a new process 0.1756 seconds ./spec/lib/immutable/deque/marshal_spec.rb:20 Top 10 slowest example groups: Immutable::Set 0.24602 seconds average (0.49203 seconds / 2 examples) ./spec/lib/immutable/set/marshal_spec.rb:3 Immutable::Deque 0.17167 seconds average (0.34335 seconds / 2 examples) ./spec/lib/immutable/deque/marshal_spec.rb:3 Immutable::Vector 0.16939 seconds average (0.33878 seconds / 2 examples) ./spec/lib/immutable/vector/marshal_spec.rb:3 Immutable::Hash 0.1687 seconds average (0.33739 seconds / 2 examples) ./spec/lib/immutable/hash/marshal_spec.rb:3 Immutable::List 0.157 seconds average (0.471 seconds / 3 examples) ./spec/lib/immutable/list/multithreading_spec.rb:4 Immutable 0.11384 seconds average (0.68301 seconds / 6 examples) ./spec/lib/load_spec.rb:6 Immutable::SortedSet 0.1105 seconds average (0.33149 seconds / 3 examples) ./spec/lib/immutable/sorted_set/marshal_spec.rb:3 Immutable::List 0.10542 seconds average (0.31626 seconds / 3 examples) ./spec/lib/immutable/list/hash_spec.rb:3 Immutable::Hash 0.0551 seconds average (0.55098 seconds / 10 examples) ./spec/lib/immutable/hash/size_spec.rb:3 Immutable::List 0.03224 seconds average (1.03 seconds / 32 examples) ./spec/lib/immutable/list/each_slice_spec.rb:3 Finished in 10.43 seconds (files took 5.3 seconds to load) 4608 examples, 0 failures ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ └──────────────────────────────────────────────────────────────────────────────┘ dh_installdocs -O--buildsystem=ruby dh_ruby_fixdocs -O--buildsystem=ruby dh_installchangelogs -O--buildsystem=ruby dh_installsystemduser -O--buildsystem=ruby dh_perl -O--buildsystem=ruby dh_link -O--buildsystem=ruby dh_strip_nondeterminism -O--buildsystem=ruby dh_compress -X.rb -O--buildsystem=ruby dh_fixperms -O--buildsystem=ruby dh_missing -O--buildsystem=ruby dh_ruby_fixdepends -O--buildsystem=ruby dh_installdeb -O--buildsystem=ruby dh_gencontrol -O--buildsystem=ruby dpkg-gencontrol: warning: Depends field of package ruby-immutable-ruby: substitution variable ${shlibs:Depends} used, but is not defined dh_md5sums -O--buildsystem=ruby dh_builddeb -O--buildsystem=ruby dpkg-deb: building package 'ruby-immutable-ruby' in '../ruby-immutable-ruby_0.1.0-2_all.deb'. dpkg-genbuildinfo --build=binary -O../ruby-immutable-ruby_0.1.0-2_amd64.buildinfo dpkg-genchanges --build=binary -O../ruby-immutable-ruby_0.1.0-2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/1057230 and its subdirectories I: Current time: Sun Dec 28 20:37:48 -12 2025 I: pbuilder-time-stamp: 1766997468 Tue Nov 26 02:14:50 UTC 2024 I: 1st build successful. Starting 2nd build on remote node ionos1-amd64.debian.net. Tue Nov 26 02:14:50 UTC 2024 I: Preparing to do remote build '2' on ionos1-amd64.debian.net. Tue Nov 26 02:14:50 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos1-amd64.debian.net is marked as down. Tue Nov 26 02:14:50 UTC 2024 - checking via ssh if ionos1-amd64.debian.net is up. removed '/tmp/read-only-fs-test-3CgXLJ' ==================================================================================== Tue Nov 26 02:14:51 UTC 2024 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos1-amd64, called using "2 ruby-immutable-ruby unstable /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ 0.1.0-2" as arguments. Tue Nov 26 02:14:51 UTC 2024 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-h5Jap4kc" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Tue Nov 26 02:14:51 UTC 2024 I: Downloading source for unstable/ruby-immutable-ruby=0.1.0-2 Reading package lists... NOTICE: 'ruby-immutable-ruby' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git Please use: git clone https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 142 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (dsc) [2161 B] Get:2 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (tar) [137 kB] Get:3 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (diff) [2840 B] Fetched 142 kB in 0s (5809 kB/s) Download complete and in download only mode Reading package lists... NOTICE: 'ruby-immutable-ruby' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git Please use: git clone https://salsa.debian.org/ruby-team/ruby-immutable-ruby.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 142 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (dsc) [2161 B] Get:2 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (tar) [137 kB] Get:3 http://deb.debian.org/debian unstable/main ruby-immutable-ruby 0.1.0-2 (diff) [2840 B] Fetched 142 kB in 0s (5809 kB/s) Download complete and in download only mode ============================================================================= Re-Building ruby-immutable-ruby in unstable on amd64 on ionos1-amd64 now. Date: Tue Nov 26 02:14:51 UTC 2024 Date UTC: Tue Nov 26 02:14:51 UTC 2024 ============================================================================= ++ mktemp -t pbuilderrc_XXXX --tmpdir=/srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ + local TMPCFG=/srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/pbuilderrc_U0E9 + case ${ARCH} in + case $ARCH in + locale=et_EE + language=et + case "${SUITE}" in + reproducible_buildflags=+all + extra_deb_build_options= + case "${SRCPACKAGE}" in + cat + echo BUILDDIR=/build/reproducible-path + '[' ruby-immutable-ruby = debian-installer -o ruby-immutable-ruby = debian-installer-netboot-images ']' + pbuilder_options=() + local pbuilder_options + DEBBUILDOPTS=-b + BINARYTARGET= + '[' ruby-immutable-ruby = u-boot ']' + case "${SRCPACKAGE}" in + PBUILDERTIMEOUT=24 + local PRESULT=0 + sudo timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/pbuilderrc_U0E9 --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b2 --logfile b2/build.log ruby-immutable-ruby_0.1.0-2.dsc W: /root/.pbuilderrc does not exist I: Logging to b2/build.log I: pbuilder: network access will be disabled during build I: Current time: Tue Nov 26 16:14:51 +14 2024 I: pbuilder-time-stamp: 1732587291 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [ruby-immutable-ruby_0.1.0-2.dsc] I: copying [./ruby-immutable-ruby_0.1.0.orig.tar.gz] I: copying [./ruby-immutable-ruby_0.1.0-2.debian.tar.xz] I: Extracting source gpgv: Signature made Sun Sep 17 20:14:42 2023 gpgv: using RSA key 4D0BE12F0E4776D8AACE9696E66C775AEBFE6C7D gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./ruby-immutable-ruby_0.1.0-2.dsc: no acceptable signature found dpkg-source: info: extracting ruby-immutable-ruby in ruby-immutable-ruby-0.1.0 dpkg-source: info: unpacking ruby-immutable-ruby_0.1.0.orig.tar.gz dpkg-source: info: unpacking ruby-immutable-ruby_0.1.0-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying no-pry-in-specs.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D01_modify_environment starting debug: Running on ionos1-amd64. I: Changing host+domainname to test build reproducibility I: Adding a custom variable just for the fun of it... I: Changing /bin/sh to bash '/bin/sh' -> '/bin/bash' lrwxrwxrwx 1 root root 9 Nov 26 02:15 /bin/sh -> /bin/bash I: Setting pbuilder2's login shell to /bin/bash I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="2" [2]="32" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='5.2.32(1)-release' BUILDDIR=/build/reproducible-path BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=amd64 DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DIRSTACK=() DISTRIBUTION=unstable EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=x86_64 HOST_ARCH=amd64 IFS=' ' INVOCATION_ID=97413c1e951141158a4955377211c36d LANG=C LANGUAGE=et_EE:et LC_ALL=C MACHTYPE=x86_64-pc-linux-gnu MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path PBCURRENTCOMMANDLINEOPERATION=build PBUILDER_OPERATION=build PBUILDER_PKGDATADIR=/usr/share/pbuilder PBUILDER_PKGLIBDIR=/usr/lib/pbuilder PBUILDER_SYSCONFDIR=/etc PIPESTATUS=([0]="0") POSIXLY_CORRECT=y PPID=1541770 PS4='+ ' PWD=/ SHELL=/bin/bash SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix SHLVL=3 SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/pbuilderrc_U0E9 --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b2 --logfile b2/build.log ruby-immutable-ruby_0.1.0-2.dsc' SUDO_GID=110 SUDO_UID=105 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://46.16.76.132:3128 I: uname -a Linux i-capture-the-hostname 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), gem2deb (>= 1), ruby-concurrent (>= 1.1), ruby-rspec, ruby-sorted-set (>= 1.0) dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19965 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on gem2deb (>= 1); however: Package gem2deb is not installed. pbuilder-satisfydepends-dummy depends on ruby-concurrent (>= 1.1); however: Package ruby-concurrent is not installed. pbuilder-satisfydepends-dummy depends on ruby-rspec; however: Package ruby-rspec is not installed. pbuilder-satisfydepends-dummy depends on ruby-sorted-set (>= 1.0); however: Package ruby-sorted-set is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} debhelper{a} devscripts{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dirmngr{a} dwz{a} file{a} gem2deb{a} gem2deb-test-runner{a} gettext{a} gettext-base{a} gnupg{a} gnupg-l10n{a} gpg{a} gpg-agent{a} gpgconf{a} gpgsm{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libassuan9{a} libb-hooks-op-check-perl{a} libclass-method-modifiers-perl{a} libclass-xsaccessor-perl{a} libclone-perl{a} libcom-err2{a} libdebhelper-perl{a} libdevel-callchecker-perl{a} libdynaloader-functions-perl{a} libedit2{a} libelf1t64{a} libencode-locale-perl{a} libexpat1{a} libfile-dirlist-perl{a} libfile-homedir-perl{a} libfile-listing-perl{a} libfile-stripnondeterminism-perl{a} libfile-touch-perl{a} libfile-which-perl{a} libgmp-dev{a} libgmpxx4ldbl{a} libgssapi-krb5-2{a} libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a} libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libicu72{a} libimport-into-perl{a} libio-html-perl{a} libio-pty-perl{a} libio-socket-ssl-perl{a} libipc-run-perl{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libksba8{a} libldap-2.5-0{a} liblwp-mediatypes-perl{a} liblwp-protocol-https-perl{a} libmagic-mgc{a} libmagic1t64{a} libmodule-runtime-perl{a} libmoo-perl{a} libncurses6{a} libnet-http-perl{a} libnet-ssleay-perl{a} libnpth0t64{a} libnsl2{a} libparams-classify-perl{a} libpipeline1{a} libpython3-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libreadline8t64{a} librole-tiny-perl{a} libruby{a} libruby3.1t64{a} libsasl2-2{a} libsasl2-modules-db{a} libsub-quote-perl{a} libtimedate-perl{a} libtirpc-common{a} libtirpc3t64{a} libtool{a} libtry-tiny-perl{a} libuchardet0{a} liburi-perl{a} libwww-perl{a} libwww-robotrules-perl{a} libxml2{a} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} openssl{a} patchutils{a} perl-openssl-defaults{a} pinentry-curses{a} po-debconf{a} python3{a} python3-minimal{a} python3.12{a} python3.12-minimal{a} rake{a} readline-common{a} ruby{a} ruby-all-dev{a} ruby-concurrent{a} ruby-diff-lcs{a} ruby-net-telnet{a} ruby-rbtree{a} ruby-rspec{a} ruby-rspec-core{a} ruby-rspec-expectations{a} ruby-rspec-mocks{a} ruby-rspec-support{a} ruby-rubygems{a} ruby-sdbm{a} ruby-sorted-set{a} ruby-webrick{a} ruby-xmlrpc{a} ruby3.1{a} ruby3.1-dev{a} rubygems-integration{a} sensible-utils{a} tzdata{a} wdiff{a} The following packages are RECOMMENDED but will NOT be installed: apt-file curl dctrl-tools debian-keyring dput dput-ng dupload equivs fonts-lato gnupg-utils gpg-wks-client krb5-locales libarchive-cpio-perl libdata-dump-perl libdistro-info-perl libgit-wrapper-perl libgitlab-api-v4-perl libgpm2 libhtml-form-perl libhtml-format-perl libhttp-daemon-perl libio-compress-brotli-perl libjs-jquery libjson-perl libldap-common liblist-compare-perl libltdl-dev libmail-sendmail-perl libmailtools-perl libnamespace-clean-perl libsasl2-modules libsoap-lite-perl libstring-shellquote-perl libxstring-perl licensecheck lintian lynx pristine-tar python3-apt python3-debian python3-magic python3-requests python3-unidiff python3-xdg ruby3.1-doc strace unzip wget zip 0 packages upgraded, 138 newly installed, 0 to remove and 0 not upgraded. Need to get 44.4 MB of archives. After unpacking 166 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.12-minimal amd64 3.12.7-3 [815 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.12-minimal amd64 3.12.7-3 [2162 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.12.7-1 [26.8 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2024b-3 [255 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-3 [32.5 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.1-1+b1 [23.2 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-3 [79.9 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 12 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-3 [324 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-3 [136 kB] Get: 14 http://deb.debian.org/debian unstable/main amd64 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 libtirpc3t64 amd64 1.3.4+ds-1.3+b1 [83.1 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 libnsl2 amd64 1.3.0-3+b3 [40.6 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-5 [69.3 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-5 [169 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 libpython3.12-stdlib amd64 3.12.7-3 [1966 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 python3.12 amd64 3.12.7-3 [671 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.12.7-1 [9712 B] Get: 22 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.12.7-1 [27.8 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.3.2-2 [1382 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20240203 [158 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.22.5-2 [200 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-5 [1181 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.2-11 [91.5 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-4 [287 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.22.5-2 [723 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.20 [89.7 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libtool all 2.4.7-8 [517 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 46 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-5+b1 [9423 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.22.5-2 [1601 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.20 [915 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libassuan9 amd64 3.0.1-2 [60.6 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 gpgconf amd64 2.2.45-2 [120 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libksba8 amd64 1.6.7-2+b1 [136 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-8 [19.6 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-8 [57.3 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 libldap-2.5-0 amd64 2.5.18+dfsg-3+b1 [188 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 libnpth0t64 amd64 1.6-3.1+b1 [18.2 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 dirmngr amd64 2.2.45-2 [368 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 gnupg-l10n all 2.2.45-2 [705 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 gpg amd64 2.2.45-2 [531 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 pinentry-curses amd64 1.2.1-4+b1 [79.7 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 gpg-agent amd64 2.2.45-2 [251 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 gpgsm amd64 2.2.45-2 [255 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 gnupg all 2.2.45-2 [376 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 libfile-dirlist-perl all 0.05-3 [7600 B] Get: 69 http://deb.debian.org/debian unstable/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libfile-touch-perl all 0.12-2 [8816 B] Get: 72 http://deb.debian.org/debian unstable/main amd64 libio-pty-perl amd64 1:1.20-1+b2 [34.3 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libipc-run-perl all 20231003.0-2 [101 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libclass-method-modifiers-perl all 2.15-1 [18.0 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 libclass-xsaccessor-perl amd64 1.19-4+b4 [36.1 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libb-hooks-op-check-perl amd64 0.22-3+b2 [10.6 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libdynaloader-functions-perl all 0.004-1 [12.1 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libdevel-callchecker-perl amd64 0.009-1+b1 [16.2 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libparams-classify-perl amd64 0.015-2+b4 [22.5 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libmodule-runtime-perl all 0.016-2 [19.6 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libimport-into-perl all 1.002005-2 [11.3 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 librole-tiny-perl all 2.002004-1 [21.4 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libsub-quote-perl all 2.006008-1 [21.8 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libmoo-perl all 2.005005-1 [58.0 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 libencode-locale-perl all 1.05-3 [12.9 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libhttp-date-perl all 6.06-1 [10.7 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 libfile-listing-perl all 6.16-1 [12.4 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 libhtml-tagset-perl all 3.24-1 [14.7 kB] Get: 90 http://deb.debian.org/debian unstable/main amd64 liburi-perl all 5.30-1 [105 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 libhtml-parser-perl amd64 3.83-1+b1 [99.7 kB] Get: 92 http://deb.debian.org/debian unstable/main amd64 libhtml-tree-perl all 5.07-3 [211 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libclone-perl amd64 0.47-1+b1 [13.9 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libio-html-perl all 1.004-3 [16.2 kB] Get: 95 http://deb.debian.org/debian unstable/main amd64 liblwp-mediatypes-perl all 6.04-2 [20.2 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libhttp-message-perl all 7.00-2 [79.8 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libhttp-cookies-perl all 6.11-1 [19.1 kB] Get: 98 http://deb.debian.org/debian unstable/main amd64 libhttp-negotiate-perl all 6.01-2 [13.1 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 perl-openssl-defaults amd64 7+b2 [6724 B] Get: 100 http://deb.debian.org/debian unstable/main amd64 libnet-ssleay-perl amd64 1.94-2 [339 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 libio-socket-ssl-perl all 2.089-1 [223 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 libnet-http-perl all 6.23-1 [23.9 kB] Get: 103 http://deb.debian.org/debian unstable/main amd64 liblwp-protocol-https-perl all 6.14-1 [10.8 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libtry-tiny-perl all 0.32-1 [22.9 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libwww-robotrules-perl all 6.02-1 [12.9 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libwww-perl all 6.77-1 [183 kB] Get: 107 http://deb.debian.org/debian unstable/main amd64 patchutils amd64 0.4.2-1 [77.5 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 wdiff amd64 1.2.2-6 [119 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 devscripts all 2.24.4 [1080 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 rubygems-integration all 1.18 [6704 B] Get: 111 http://deb.debian.org/debian unstable/main amd64 ruby-net-telnet all 0.2.0-1 [13.1 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 ruby-webrick all 1.8.1-1 [51.4 kB] Get: 113 http://deb.debian.org/debian unstable/main amd64 ruby-xmlrpc all 0.3.3-2 [24.4 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 libruby amd64 1:3.1+nmu1 [4664 B] Get: 115 http://deb.debian.org/debian unstable/main amd64 ruby-sdbm amd64 1.0.0-5+b5 [15.6 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20240808-1 [93.9 kB] Get: 117 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5-2+b1 [105 kB] Get: 118 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-1+b2 [52.7 kB] Get: 119 http://deb.debian.org/debian unstable/main amd64 libruby3.1t64 amd64 3.1.2-8.4 [5411 kB] Get: 120 http://deb.debian.org/debian unstable/main amd64 ruby3.1 amd64 3.1.2-8.4 [664 kB] Get: 121 http://deb.debian.org/debian unstable/main amd64 ruby-rubygems all 3.4.20-1 [309 kB] Get: 122 http://deb.debian.org/debian unstable/main amd64 ruby amd64 1:3.1+nmu1 [5584 B] Get: 123 http://deb.debian.org/debian unstable/main amd64 rake all 13.2.1-1 [65.2 kB] Get: 124 http://deb.debian.org/debian unstable/main amd64 gem2deb-test-runner amd64 2.2.5 [17.9 kB] Get: 125 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-2+b2 [329 kB] Get: 126 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-2+b2 [642 kB] Get: 127 http://deb.debian.org/debian unstable/main amd64 ruby3.1-dev amd64 3.1.2-8.4 [1002 kB] Get: 128 http://deb.debian.org/debian unstable/main amd64 ruby-all-dev amd64 1:3.1+nmu1 [5672 B] Get: 129 http://deb.debian.org/debian unstable/main amd64 gem2deb amd64 2.2.5 [48.0 kB] Get: 130 http://deb.debian.org/debian unstable/main amd64 ruby-concurrent all 1.2.3-4 [290 kB] Get: 131 http://deb.debian.org/debian unstable/main amd64 ruby-diff-lcs all 1.5.1-1 [28.1 kB] Get: 132 http://deb.debian.org/debian unstable/main amd64 ruby-rbtree amd64 0.4.6-1+b1 [22.3 kB] Get: 133 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-support all 3.13.0c0e0m0s1-2 [28.5 kB] Get: 134 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-core all 3.13.0c0e0m0s1-2 [164 kB] Get: 135 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 136 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 137 http://deb.debian.org/debian unstable/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 138 http://deb.debian.org/debian unstable/main amd64 ruby-sorted-set all 1.0.3-3 [4736 B] Fetched 44.4 MB in 1s (34.9 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.12-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19965 files and directories currently installed.) Preparing to unpack .../libpython3.12-minimal_3.12.7-3_amd64.deb ... Unpacking libpython3.12-minimal:amd64 (3.12.7-3) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../python3.12-minimal_3.12.7-3_amd64.deb ... Unpacking python3.12-minimal (3.12.7-3) ... Setting up libpython3.12-minimal:amd64 (3.12.7-3) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.12-minimal (3.12.7-3) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20285 files and directories currently installed.) Preparing to unpack .../00-python3-minimal_3.12.7-1_amd64.deb ... Unpacking python3-minimal (3.12.7-1) ... Selecting previously unselected package media-types. Preparing to unpack .../01-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../02-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../03-tzdata_2024b-3_all.deb ... Unpacking tzdata (2024b-3) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../04-libkrb5support0_1.21.3-3_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-3) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../05-libcom-err2_1.47.1-1+b1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.1-1+b1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../06-libk5crypto3_1.21.3-3_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-3) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../07-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../08-libkrb5-3_1.21.3-3_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-3) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../09-libgssapi-krb5-2_1.21.3-3_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-3) ... Selecting previously unselected package libtirpc-common. Preparing to unpack .../10-libtirpc-common_1.3.4+ds-1.3_all.deb ... Unpacking libtirpc-common (1.3.4+ds-1.3) ... Selecting previously unselected package libtirpc3t64:amd64. Preparing to unpack .../11-libtirpc3t64_1.3.4+ds-1.3+b1_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3 to /lib/x86_64-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3.0.0 to /lib/x86_64-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' Unpacking libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Selecting previously unselected package libnsl2:amd64. Preparing to unpack .../12-libnsl2_1.3.0-3+b3_amd64.deb ... Unpacking libnsl2:amd64 (1.3.0-3+b3) ... Selecting previously unselected package readline-common. Preparing to unpack .../13-readline-common_8.2-5_all.deb ... Unpacking readline-common (8.2-5) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../14-libreadline8t64_8.2-5_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-5) ... Selecting previously unselected package libpython3.12-stdlib:amd64. Preparing to unpack .../15-libpython3.12-stdlib_3.12.7-3_amd64.deb ... Unpacking libpython3.12-stdlib:amd64 (3.12.7-3) ... Selecting previously unselected package python3.12. Preparing to unpack .../16-python3.12_3.12.7-3_amd64.deb ... Unpacking python3.12 (3.12.7-3) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../17-libpython3-stdlib_3.12.7-1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.12.7-1) ... Setting up python3-minimal (3.12.7-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21347 files and directories currently installed.) Preparing to unpack .../000-python3_3.12.7-1_amd64.deb ... Unpacking python3 (3.12.7-1) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../001-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../002-openssl_3.3.2-2_amd64.deb ... Unpacking openssl (3.3.2-2) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../003-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../004-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../005-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../006-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../007-gettext-base_0.22.5-2_amd64.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../008-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../009-groff-base_1.23.0-5_amd64.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../010-bsdextrautils_2.40.2-11_amd64.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../011-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../012-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../013-m4_1.4.19-4_amd64.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../014-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../015-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../016-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../017-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../018-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../019-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../020-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../021-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../022-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../023-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../024-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../025-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../026-libicu72_72.1-5+b1_amd64.deb ... Unpacking libicu72:amd64 (72.1-5+b1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../027-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../028-gettext_0.22.5-2_amd64.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../029-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../030-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../031-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package libassuan9:amd64. Preparing to unpack .../032-libassuan9_3.0.1-2_amd64.deb ... Unpacking libassuan9:amd64 (3.0.1-2) ... Selecting previously unselected package gpgconf. Preparing to unpack .../033-gpgconf_2.2.45-2_amd64.deb ... Unpacking gpgconf (2.2.45-2) ... Selecting previously unselected package libksba8:amd64. Preparing to unpack .../034-libksba8_1.6.7-2+b1_amd64.deb ... Unpacking libksba8:amd64 (1.6.7-2+b1) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../035-libsasl2-modules-db_2.1.28+dfsg1-8_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-8) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../036-libsasl2-2_2.1.28+dfsg1-8_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-8) ... Selecting previously unselected package libldap-2.5-0:amd64. Preparing to unpack .../037-libldap-2.5-0_2.5.18+dfsg-3+b1_amd64.deb ... Unpacking libldap-2.5-0:amd64 (2.5.18+dfsg-3+b1) ... Selecting previously unselected package libnpth0t64:amd64. Preparing to unpack .../038-libnpth0t64_1.6-3.1+b1_amd64.deb ... Unpacking libnpth0t64:amd64 (1.6-3.1+b1) ... Selecting previously unselected package dirmngr. Preparing to unpack .../039-dirmngr_2.2.45-2_amd64.deb ... Unpacking dirmngr (2.2.45-2) ... Selecting previously unselected package gnupg-l10n. Preparing to unpack .../040-gnupg-l10n_2.2.45-2_all.deb ... Unpacking gnupg-l10n (2.2.45-2) ... Selecting previously unselected package gpg. Preparing to unpack .../041-gpg_2.2.45-2_amd64.deb ... Unpacking gpg (2.2.45-2) ... Selecting previously unselected package pinentry-curses. Preparing to unpack .../042-pinentry-curses_1.2.1-4+b1_amd64.deb ... Unpacking pinentry-curses (1.2.1-4+b1) ... Selecting previously unselected package gpg-agent. Preparing to unpack .../043-gpg-agent_2.2.45-2_amd64.deb ... Unpacking gpg-agent (2.2.45-2) ... Selecting previously unselected package gpgsm. Preparing to unpack .../044-gpgsm_2.2.45-2_amd64.deb ... Unpacking gpgsm (2.2.45-2) ... Selecting previously unselected package gnupg. Preparing to unpack .../045-gnupg_2.2.45-2_all.deb ... Unpacking gnupg (2.2.45-2) ... Selecting previously unselected package libfile-dirlist-perl. Preparing to unpack .../046-libfile-dirlist-perl_0.05-3_all.deb ... Unpacking libfile-dirlist-perl (0.05-3) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../047-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../048-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libfile-touch-perl. Preparing to unpack .../049-libfile-touch-perl_0.12-2_all.deb ... Unpacking libfile-touch-perl (0.12-2) ... Selecting previously unselected package libio-pty-perl. Preparing to unpack .../050-libio-pty-perl_1%3a1.20-1+b2_amd64.deb ... Unpacking libio-pty-perl (1:1.20-1+b2) ... Selecting previously unselected package libipc-run-perl. Preparing to unpack .../051-libipc-run-perl_20231003.0-2_all.deb ... Unpacking libipc-run-perl (20231003.0-2) ... Selecting previously unselected package libclass-method-modifiers-perl. Preparing to unpack .../052-libclass-method-modifiers-perl_2.15-1_all.deb ... Unpacking libclass-method-modifiers-perl (2.15-1) ... Selecting previously unselected package libclass-xsaccessor-perl. Preparing to unpack .../053-libclass-xsaccessor-perl_1.19-4+b4_amd64.deb ... Unpacking libclass-xsaccessor-perl (1.19-4+b4) ... Selecting previously unselected package libb-hooks-op-check-perl:amd64. Preparing to unpack .../054-libb-hooks-op-check-perl_0.22-3+b2_amd64.deb ... Unpacking libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Selecting previously unselected package libdynaloader-functions-perl. Preparing to unpack .../055-libdynaloader-functions-perl_0.004-1_all.deb ... Unpacking libdynaloader-functions-perl (0.004-1) ... Selecting previously unselected package libdevel-callchecker-perl:amd64. Preparing to unpack .../056-libdevel-callchecker-perl_0.009-1+b1_amd64.deb ... Unpacking libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Selecting previously unselected package libparams-classify-perl:amd64. Preparing to unpack .../057-libparams-classify-perl_0.015-2+b4_amd64.deb ... Unpacking libparams-classify-perl:amd64 (0.015-2+b4) ... Selecting previously unselected package libmodule-runtime-perl. Preparing to unpack .../058-libmodule-runtime-perl_0.016-2_all.deb ... Unpacking libmodule-runtime-perl (0.016-2) ... Selecting previously unselected package libimport-into-perl. Preparing to unpack .../059-libimport-into-perl_1.002005-2_all.deb ... Unpacking libimport-into-perl (1.002005-2) ... Selecting previously unselected package librole-tiny-perl. Preparing to unpack .../060-librole-tiny-perl_2.002004-1_all.deb ... Unpacking librole-tiny-perl (2.002004-1) ... Selecting previously unselected package libsub-quote-perl. Preparing to unpack .../061-libsub-quote-perl_2.006008-1_all.deb ... Unpacking libsub-quote-perl (2.006008-1) ... Selecting previously unselected package libmoo-perl. Preparing to unpack .../062-libmoo-perl_2.005005-1_all.deb ... Unpacking libmoo-perl (2.005005-1) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../063-libencode-locale-perl_1.05-3_all.deb ... Unpacking libencode-locale-perl (1.05-3) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../064-libtimedate-perl_2.3300-2_all.deb ... Unpacking libtimedate-perl (2.3300-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../065-libhttp-date-perl_6.06-1_all.deb ... Unpacking libhttp-date-perl (6.06-1) ... Selecting previously unselected package libfile-listing-perl. Preparing to unpack .../066-libfile-listing-perl_6.16-1_all.deb ... Unpacking libfile-listing-perl (6.16-1) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../067-libhtml-tagset-perl_3.24-1_all.deb ... Unpacking libhtml-tagset-perl (3.24-1) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../068-liburi-perl_5.30-1_all.deb ... Unpacking liburi-perl (5.30-1) ... Selecting previously unselected package libhtml-parser-perl:amd64. Preparing to unpack .../069-libhtml-parser-perl_3.83-1+b1_amd64.deb ... Unpacking libhtml-parser-perl:amd64 (3.83-1+b1) ... Selecting previously unselected package libhtml-tree-perl. Preparing to unpack .../070-libhtml-tree-perl_5.07-3_all.deb ... Unpacking libhtml-tree-perl (5.07-3) ... Selecting previously unselected package libclone-perl:amd64. Preparing to unpack .../071-libclone-perl_0.47-1+b1_amd64.deb ... Unpacking libclone-perl:amd64 (0.47-1+b1) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../072-libio-html-perl_1.004-3_all.deb ... Unpacking libio-html-perl (1.004-3) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../073-liblwp-mediatypes-perl_6.04-2_all.deb ... Unpacking liblwp-mediatypes-perl (6.04-2) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../074-libhttp-message-perl_7.00-2_all.deb ... Unpacking libhttp-message-perl (7.00-2) ... Selecting previously unselected package libhttp-cookies-perl. Preparing to unpack .../075-libhttp-cookies-perl_6.11-1_all.deb ... Unpacking libhttp-cookies-perl (6.11-1) ... Selecting previously unselected package libhttp-negotiate-perl. Preparing to unpack .../076-libhttp-negotiate-perl_6.01-2_all.deb ... Unpacking libhttp-negotiate-perl (6.01-2) ... Selecting previously unselected package perl-openssl-defaults:amd64. Preparing to unpack .../077-perl-openssl-defaults_7+b2_amd64.deb ... Unpacking perl-openssl-defaults:amd64 (7+b2) ... Selecting previously unselected package libnet-ssleay-perl:amd64. Preparing to unpack .../078-libnet-ssleay-perl_1.94-2_amd64.deb ... Unpacking libnet-ssleay-perl:amd64 (1.94-2) ... Selecting previously unselected package libio-socket-ssl-perl. Preparing to unpack .../079-libio-socket-ssl-perl_2.089-1_all.deb ... Unpacking libio-socket-ssl-perl (2.089-1) ... Selecting previously unselected package libnet-http-perl. Preparing to unpack .../080-libnet-http-perl_6.23-1_all.deb ... Unpacking libnet-http-perl (6.23-1) ... Selecting previously unselected package liblwp-protocol-https-perl. Preparing to unpack .../081-liblwp-protocol-https-perl_6.14-1_all.deb ... Unpacking liblwp-protocol-https-perl (6.14-1) ... Selecting previously unselected package libtry-tiny-perl. Preparing to unpack .../082-libtry-tiny-perl_0.32-1_all.deb ... Unpacking libtry-tiny-perl (0.32-1) ... Selecting previously unselected package libwww-robotrules-perl. Preparing to unpack .../083-libwww-robotrules-perl_6.02-1_all.deb ... Unpacking libwww-robotrules-perl (6.02-1) ... Selecting previously unselected package libwww-perl. Preparing to unpack .../084-libwww-perl_6.77-1_all.deb ... Unpacking libwww-perl (6.77-1) ... Selecting previously unselected package patchutils. Preparing to unpack .../085-patchutils_0.4.2-1_amd64.deb ... Unpacking patchutils (0.4.2-1) ... Selecting previously unselected package wdiff. Preparing to unpack .../086-wdiff_1.2.2-6_amd64.deb ... Unpacking wdiff (1.2.2-6) ... Selecting previously unselected package devscripts. Preparing to unpack .../087-devscripts_2.24.4_all.deb ... Unpacking devscripts (2.24.4) ... Selecting previously unselected package rubygems-integration. Preparing to unpack .../088-rubygems-integration_1.18_all.deb ... Unpacking rubygems-integration (1.18) ... Selecting previously unselected package ruby-net-telnet. Preparing to unpack .../089-ruby-net-telnet_0.2.0-1_all.deb ... Unpacking ruby-net-telnet (0.2.0-1) ... Selecting previously unselected package ruby-webrick. Preparing to unpack .../090-ruby-webrick_1.8.1-1_all.deb ... Unpacking ruby-webrick (1.8.1-1) ... Selecting previously unselected package ruby-xmlrpc. Preparing to unpack .../091-ruby-xmlrpc_0.3.3-2_all.deb ... Unpacking ruby-xmlrpc (0.3.3-2) ... Selecting previously unselected package libruby:amd64. Preparing to unpack .../092-libruby_1%3a3.1+nmu1_amd64.deb ... Unpacking libruby:amd64 (1:3.1+nmu1) ... Selecting previously unselected package ruby-sdbm:amd64. Preparing to unpack .../093-ruby-sdbm_1.0.0-5+b5_amd64.deb ... Unpacking ruby-sdbm:amd64 (1.0.0-5+b5) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../094-libedit2_3.1-20240808-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20240808-1) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../095-libncurses6_6.5-2+b1_amd64.deb ... Unpacking libncurses6:amd64 (6.5-2+b1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../096-libyaml-0-2_0.2.5-1+b2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-1+b2) ... Selecting previously unselected package libruby3.1t64:amd64. Preparing to unpack .../097-libruby3.1t64_3.1.2-8.4_amd64.deb ... Unpacking libruby3.1t64:amd64 (3.1.2-8.4) ... Selecting previously unselected package ruby3.1. Preparing to unpack .../098-ruby3.1_3.1.2-8.4_amd64.deb ... Unpacking ruby3.1 (3.1.2-8.4) ... Selecting previously unselected package ruby-rubygems. Preparing to unpack .../099-ruby-rubygems_3.4.20-1_all.deb ... Unpacking ruby-rubygems (3.4.20-1) ... Selecting previously unselected package ruby. Preparing to unpack .../100-ruby_1%3a3.1+nmu1_amd64.deb ... Unpacking ruby (1:3.1+nmu1) ... Selecting previously unselected package rake. Preparing to unpack .../101-rake_13.2.1-1_all.deb ... Unpacking rake (13.2.1-1) ... Selecting previously unselected package gem2deb-test-runner. Preparing to unpack .../102-gem2deb-test-runner_2.2.5_amd64.deb ... Unpacking gem2deb-test-runner (2.2.5) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../103-libgmpxx4ldbl_2%3a6.3.0+dfsg-2+b2_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-2+b2) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../104-libgmp-dev_2%3a6.3.0+dfsg-2+b2_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-2+b2) ... Selecting previously unselected package ruby3.1-dev:amd64. Preparing to unpack .../105-ruby3.1-dev_3.1.2-8.4_amd64.deb ... Unpacking ruby3.1-dev:amd64 (3.1.2-8.4) ... Selecting previously unselected package ruby-all-dev:amd64. Preparing to unpack .../106-ruby-all-dev_1%3a3.1+nmu1_amd64.deb ... Unpacking ruby-all-dev:amd64 (1:3.1+nmu1) ... Selecting previously unselected package gem2deb. Preparing to unpack .../107-gem2deb_2.2.5_amd64.deb ... Unpacking gem2deb (2.2.5) ... Selecting previously unselected package ruby-concurrent. Preparing to unpack .../108-ruby-concurrent_1.2.3-4_all.deb ... Unpacking ruby-concurrent (1.2.3-4) ... Selecting previously unselected package ruby-diff-lcs. Preparing to unpack .../109-ruby-diff-lcs_1.5.1-1_all.deb ... Unpacking ruby-diff-lcs (1.5.1-1) ... Selecting previously unselected package ruby-rbtree. Preparing to unpack .../110-ruby-rbtree_0.4.6-1+b1_amd64.deb ... Unpacking ruby-rbtree (0.4.6-1+b1) ... Selecting previously unselected package ruby-rspec-support. Preparing to unpack .../111-ruby-rspec-support_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-support (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-core. Preparing to unpack .../112-ruby-rspec-core_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-core (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-expectations. Preparing to unpack .../113-ruby-rspec-expectations_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec-mocks. Preparing to unpack .../114-ruby-rspec-mocks_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-rspec. Preparing to unpack .../115-ruby-rspec_3.13.0c0e0m0s1-2_all.deb ... Unpacking ruby-rspec (3.13.0c0e0m0s1-2) ... Selecting previously unselected package ruby-sorted-set. Preparing to unpack .../116-ruby-sorted-set_1.0.3-3_all.deb ... Unpacking ruby-sorted-set (1.0.3-3) ... Setting up libksba8:amd64 (1.6.7-2+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up wdiff (1.2.2-6) ... Setting up libfile-which-perl (1.27-2) ... Setting up libnpth0t64:amd64 (1.6-3.1+b1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libicu72:amd64 (72.1-5+b1) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libdynaloader-functions-perl (0.004-1) ... Setting up libclass-method-modifiers-perl (2.15-1) ... Setting up libio-pty-perl (1:1.20-1+b2) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libclone-perl:amd64 (0.47-1+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-1+b2) ... Setting up libtirpc-common (1.3.4+ds-1.3) ... Setting up libhtml-tagset-perl (3.24-1) ... Setting up libdebhelper-perl (13.20) ... Setting up libedit2:amd64 (3.1-20240808-1) ... Setting up liblwp-mediatypes-perl (6.04-2) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libtry-tiny-perl (0.32-1) ... Setting up perl-openssl-defaults:amd64 (7+b2) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libencode-locale-perl (1.05-3) ... Setting up libcom-err2:amd64 (1.47.1-1+b1) ... Setting up file (1:5.45-3+b1) ... Setting up ruby-concurrent (1.2.3-4) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libkrb5support0:amd64 (1.21.3-3) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-8) ... Setting up tzdata (2024b-3) ... Current default time zone: 'Etc/UTC' Local time is now: Tue Nov 26 02:16:09 UTC 2024. Universal Time is now: Tue Nov 26 02:16:09 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-2+b2) ... Setting up gnupg-l10n (2.2.45-2) ... Setting up libncurses6:amd64 (6.5-2+b1) ... Setting up ruby-net-telnet (0.2.0-1) ... Setting up libio-html-perl (1.004-3) ... Setting up autopoint (0.22.5-2) ... Setting up libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Setting up libipc-run-perl (20231003.0-2) ... Setting up libk5crypto3:amd64 (1.21.3-3) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-8) ... Setting up autoconf (2.72-3) ... Setting up ruby-rspec-support (3.13.0c0e0m0s1-2) ... Setting up libtimedate-perl (2.3300-2) ... Setting up ruby-webrick (1.8.1-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libassuan9:amd64 (3.0.1-2) ... Setting up librole-tiny-perl (2.002004-1) ... Setting up netbase (6.4) ... Setting up libsub-quote-perl (2.006008-1) ... Setting up libclass-xsaccessor-perl (1.19-4+b4) ... Setting up libkrb5-3:amd64 (1.21.3-3) ... Setting up libfile-dirlist-perl (0.05-3) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up openssl (3.3.2-2) ... Setting up readline-common (8.2-5) ... Setting up ruby-xmlrpc (0.3.3-2) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up liburi-perl (5.30-1) ... Setting up libfile-touch-perl (0.12-2) ... Setting up libnet-ssleay-perl:amd64 (1.94-2) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up pinentry-curses (1.2.1-4+b1) ... Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up libhttp-date-perl (6.06-1) ... Setting up gettext (0.22.5-2) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-2+b2) ... Setting up libfile-listing-perl (6.16-1) ... Setting up libtool (2.4.7-8) ... Setting up libnet-http-perl (6.23-1) ... Setting up libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Setting up libldap-2.5-0:amd64 (2.5.18+dfsg-3+b1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up patchutils (0.4.2-1) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up libgssapi-krb5-2:amd64 (1.21.3-3) ... Setting up libreadline8t64:amd64 (8.2-5) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up libwww-robotrules-perl (6.02-1) ... Setting up groff-base (1.23.0-5) ... Setting up libhtml-parser-perl:amd64 (3.83-1+b1) ... Setting up gpgconf (2.2.45-2) ... Setting up libio-socket-ssl-perl (2.089-1) ... Setting up gpg (2.2.45-2) ... Setting up libhttp-message-perl (7.00-2) ... Setting up libhttp-negotiate-perl (6.01-2) ... Setting up gpg-agent (2.2.45-2) ... Setting up libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Setting up libhttp-cookies-perl (6.11-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libhtml-tree-perl (5.07-3) ... Setting up libparams-classify-perl:amd64 (0.015-2+b4) ... Setting up gpgsm (2.2.45-2) ... Setting up rubygems-integration (1.18) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up dirmngr (2.2.45-2) ... Setting up libmodule-runtime-perl (0.016-2) ... Setting up libnsl2:amd64 (1.3.0-3+b3) ... Setting up gnupg (2.2.45-2) ... Setting up libpython3.12-stdlib:amd64 (3.12.7-3) ... Setting up libimport-into-perl (1.002005-2) ... Setting up libmoo-perl (2.005005-1) ... Setting up python3.12 (3.12.7-3) ... Setting up debhelper (13.20) ... Setting up libpython3-stdlib:amd64 (3.12.7-1) ... Setting up python3 (3.12.7-1) ... Setting up liblwp-protocol-https-perl (6.14-1) ... Setting up libruby:amd64 (1:3.1+nmu1) ... Setting up libwww-perl (6.77-1) ... Setting up ruby-rubygems (3.4.20-1) ... Setting up devscripts (2.24.4) ... Setting up ruby-sdbm:amd64 (1.0.0-5+b5) ... Setting up libruby3.1t64:amd64 (3.1.2-8.4) ... Setting up ruby3.1 (3.1.2-8.4) ... Setting up ruby3.1-dev:amd64 (3.1.2-8.4) ... Setting up ruby-all-dev:amd64 (1:3.1+nmu1) ... Setting up ruby (1:3.1+nmu1) ... Setting up ruby-rbtree (0.4.6-1+b1) ... Setting up rake (13.2.1-1) ... Setting up ruby-rspec-core (3.13.0c0e0m0s1-2) ... Setting up ruby-diff-lcs (1.5.1-1) ... Setting up ruby-sorted-set (1.0.3-3) ... Setting up gem2deb-test-runner (2.2.5) ... Setting up ruby-rspec-expectations (3.13.0c0e0m0s1-2) ... Setting up ruby-rspec-mocks (3.13.0c0e0m0s1-2) ... Setting up gem2deb (2.2.5) ... Setting up ruby-rspec (3.13.0c0e0m0s1-2) ... Processing triggers for libc-bin (2.40-4) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/A99_set_merged_usr starting Not re-configuring usrmerge for unstable I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/A99_set_merged_usr finished hostname: Name or service not known I: Running cd /build/reproducible-path/ruby-immutable-ruby-0.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-immutable-ruby_0.1.0-2_source.changes dpkg-buildpackage: info: source package ruby-immutable-ruby dpkg-buildpackage: info: source version 0.1.0-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Jeremy Bícha dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean --buildsystem=ruby --with ruby dh_auto_clean -O--buildsystem=ruby dh_ruby --clean dh_autoreconf_clean -O--buildsystem=ruby dh_clean -O--buildsystem=ruby debian/rules binary dh binary --buildsystem=ruby --with ruby dh_update_autotools_config -O--buildsystem=ruby dh_autoreconf -O--buildsystem=ruby dh_auto_configure -O--buildsystem=ruby dh_ruby --configure dh_auto_build -O--buildsystem=ruby dh_ruby --build dh_auto_test -O--buildsystem=ruby dh_ruby --test create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=ruby dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-immutable-ruby/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby ┌──────────────────────────────────────────────────────────────────────────────┐ │ ruby-immutable-ruby: Installing files and building extensions for ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ /usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20241126-1553380-zfqh4g/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: description and summary are identical WARNING: open-ended dependency on bundler (>= 2.2.10, development) is not recommended if bundler is semantically versioned, use: add_development_dependency 'bundler', '~> 2.2', '>= 2.2.10' WARNING: See https://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: immutable-ruby Version: 0.1.0 File: immutable-ruby-0.1.0.gem /usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-immutable-ruby/usr/share/rubygems-integration/all /tmp/d20241126-1553380-zfqh4g/immutable-ruby-0.1.0.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext/enumerable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext/io.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/deque.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/enumerable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/hash.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/list.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/nested.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/set.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/sorted_set.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/trie.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/undefined.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/vector.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/version.rb Successfully installed immutable-ruby-0.1.0 1 gem installed cd debian/ruby-immutable-ruby/usr/share/rubygems-integration/all rm -rf bin rm -rf build_info rm -rf cache rm -rf doc rm -rf extensions rmdir plugins cd gems/immutable-ruby-0.1.0 rm -f chmod 644 lib/immutable/core_ext/enumerable.rb lib/immutable/core_ext/io.rb lib/immutable/core_ext.rb lib/immutable/deque.rb lib/immutable/enumerable.rb lib/immutable/hash.rb lib/immutable/list.rb lib/immutable/nested.rb lib/immutable/set.rb lib/immutable/sorted_set.rb lib/immutable/trie.rb lib/immutable/undefined.rb lib/immutable/vector.rb lib/immutable/version.rb lib/immutable.rb find lib/ -type d -empty -delete cd - cd - /usr/bin/ruby3.1 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -e gem\ \"immutable-ruby\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby3.1 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation Array #to_list returns an equivalent Immutable list Enumerable #to_list returns an equivalent list works on Ranges IO #to_list with a File returns an equivalent list with a StringIO returns an equivalent list Immutable::Deque #clear on [] preserves the original returns an empty deque on ["A"] preserves the original returns an empty deque on ["A", "B", "C"] preserves the original returns an empty deque from a subclass returns an instance of the subclass Immutable::Deque .[] with no arguments always returns the same instance returns an empty, frozen deque with a number of items always returns a different instance is the same as repeatedly using #endeque Immutable::Deque on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::Deque #dequeue on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on empty subclass returns empty object of same class #shift on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on empty subclass returns empty object of same class Immutable::Deque #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false after dedequeing an item from ["A", "B", "C"] returns false .empty returns the canonical empty deque from a subclass returns an empty instance of the subclass Immutable::Deque #enqueue on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["A", "B"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["A", "B", "C", "D"] #push on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["A", "B"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["A", "B", "C", "D"] Immutable::Deque #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" Immutable::Deque #inspect on [] returns "Immutable::Deque[]" returns a string which can be eval'd to get an equivalent object on ["A"] returns "Immutable::Deque[\"A\"]" returns a string which can be eval'd to get an equivalent object on ["A", "B", "C"] returns "Immutable::Deque[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent object Immutable::Deque #last on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "C" Immutable::Deque #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to push and pop items after loading Immutable::Deque .new accepts a single enumerable argument and creates a new deque is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new deque Immutable::Deque #pop on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns [] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["A", "B"] returns a frozen instance on empty subclass returns an empty object of the same class Immutable::Deque #pretty_print prints the whole Deque on one line if it fits prints each item on its own line, if not Immutable::Deque #push pushing "A" into [] preserves the original returns ["A"] returns a frozen instance pushing "B" into ["A"] preserves the original returns ["A", "B"] returns a frozen instance pushing "D" into ["A", "B", "C"] preserves the original returns ["A", "B", "C", "D"] returns a frozen instance on a subclass returns an object of same class Immutable::Deque modification (using #push, #pop, #shift, and #unshift) works when applied in many random combinations Immutable::Deque #rotate on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns ["A"] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["B", "C", "A"] returns a frozen instance on ["A", "B", "C", "D"] preserves the original returns ["A", "B", "C", "D"] returns a frozen instance on ["A", "B", "C", "D"] preserves the original returns ["C", "D", "A", "B"] returns a frozen instance on a Deque with most items on 'front' list works with a small rotation works with a larger rotation on a Deque with most items on 'rear' list works with a small rotation works with a larger rotation on empty subclass returns an empty object of the same class Immutable::Deque #shift on [] preserves the original returns [] returns a frozen instance on ["A"] preserves the original returns [] returns a frozen instance on ["A", "B", "C"] preserves the original returns ["B", "C"] returns a frozen instance Immutable::Deque #size on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 #length on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 Immutable::Deque #to_a on [] returns [] returns a mutable array on ["A"] returns ["A"] returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] returns a mutable array #entries on [] returns [] returns a mutable array on ["A"] returns ["A"] returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] returns a mutable array Immutable::Deque #to_ary enables implicit conversion to block parameters method arguments works with splat Immutable::Deque #to_list on [] returns a list containing [] on ["A"] returns a list containing ["A"] on ["A", "B", "C"] returns a list containing ["A", "B", "C"] after dedequeing an item from ["A", "B", "C"] returns a list containing ["B", "C"] Immutable::Deque #unshift on [] with "A" preserves the original returns ["A"] returns a frozen instance on ["A"] with "B" preserves the original returns ["B", "A"] returns a frozen instance on ["A"] with "A" preserves the original returns ["A", "A"] returns a frozen instance on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] returns a frozen instance Immutable::Hash #all? when empty without a block returns true with a block returns true when not empty without a block returns true with a block returns true if the block always returns true returns false if the block ever returns false propagates an exception from the block stops iterating as soon as the block returns false Immutable::Hash #any? when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true (["A", "aye"]) returns false if the block always returns false returns true if the block ever returns true (["B", "bee"]) returns false if the block always returns false returns true if the block ever returns true (["C", "see"]) returns false if the block always returns false returns true if the block ever returns true ([nil, "NIL"]) returns false if the block always returns false propagates exceptions raised in the block stops iterating as soon as the block returns true with no block returns true Immutable::Hash #assoc searches for a key/val pair with a given key returns nil if a matching key is not found returns nil even if there is a default uses #== to compare keys with provided object #rassoc searches for a key/val pair with a given value returns nil if a matching value is not found returns nil even if there is a default uses #== to compare values with provided object Immutable::Hash #clear maintains the default Proc, if there is one on [] preserves the original returns an empty hash on [{"A"=>"aye"}] preserves the original returns an empty hash on [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] preserves the original returns an empty hash on a subclass returns an empty instance of the subclass Immutable::Hash .hash with nothing returns the canonical empty hash with an implicit hash is equivalent to repeatedly using #put with an array of pairs initializes a new Hash with an Immutable::Hash initializes an equivalent Hash Immutable::Hash #dup returns self #clone returns self Immutable::Hash #default_proc returns the default block given when the Hash was created returns nil if no default block was given after a key/val pair are inserted doesn't change after all key/val pairs are filtered out doesn't change after Hash is inverted doesn't change when a slice is taken doesn't change when keys are removed with #except doesn't change when Hash is mapped doesn't change when another Hash is merged in doesn't change Immutable::Hash #delete with an existing key preserves the original returns a copy with the remaining key/value pairs with a non-existing key preserves the original values returns self when removing the last key from a Hash with no default block returns the canonical empty Hash Immutable::Hash #dig returns the value with one argument to dig returns the value in nested hashes returns nil if the key is not present returns nil if you dig out the end of the hash raises a NoMethodError if a value does not support #dig returns the correct value when there is a default proc Immutable::Hash #each with a block (internal iteration) returns self yields all key/value pairs yields key/value pairs in the same order as #each_key and #each_value yields both of a pair of colliding keys yields only the key to a block expecting |key,| with no block returns an Enumerator #each_pair with a block (internal iteration) returns self yields all key/value pairs yields key/value pairs in the same order as #each_key and #each_value yields both of a pair of colliding keys yields only the key to a block expecting |key,| with no block returns an Enumerator #each_key yields all keys with no block returns an Enumerator #each_value yields all values with no block returns an Enumerator Immutable::Hash #each_with_index with a block (internal iteration) returns self yields all key/value pairs with numeric indexes with no block returns an Enumerator Immutable::Hash #empty? returns true for [] returns false for [{"A"=>"aye"}] returns false for [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] returns true for empty hashes which have a default block .empty returns the canonical empty Hash from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Hash Immutable::Hash returns true on a large hash which is modified and then modified back again #eql? returns false when comparing with a standard hash returns false when comparing with an arbitrary object returns false when comparing with a subclass of Immutable::Hash #== returns true when comparing with a standard hash returns false when comparing with an arbitrary object returns true when comparing with a subclass of Immutable::Hash performs numeric conversions between floats and BigDecimals #eql? returns true for {} and {} for {} and {} returns false for {"A"=>"aye"} and {} for {} and {"A"=>"aye"} returns false for {} and {"A"=>"aye"} for {"A"=>"aye"} and {} returns true for {"A"=>"aye"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye"} returns false for {"A"=>"aye"} and {"B"=>"bee"} for {"B"=>"bee"} and {"A"=>"aye"} returns false for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} returns false for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} returns true for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} returns true for {"C"=>"see", "A"=>"aye", "B"=>"bee"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"C"=>"see", "A"=>"aye", "B"=>"bee"} #== returns true for {} and {} for {} and {} returns false for {"A"=>"aye"} and {} for {} and {"A"=>"aye"} returns false for {} and {"A"=>"aye"} for {"A"=>"aye"} and {} returns true for {"A"=>"aye"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye"} returns false for {"A"=>"aye"} and {"B"=>"bee"} for {"B"=>"bee"} and {"A"=>"aye"} returns false for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} returns false for {"A"=>"aye"} and {"A"=>"aye", "B"=>"bee"} for {"A"=>"aye", "B"=>"bee"} and {"A"=>"aye"} returns true for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} returns true for {"C"=>"see", "A"=>"aye", "B"=>"bee"} and {"A"=>"aye", "B"=>"bee", "C"=>"see"} for {"A"=>"aye", "B"=>"bee", "C"=>"see"} and {"C"=>"see", "A"=>"aye", "B"=>"bee"} Immutable::Hash #except works on a large Hash, with many combinations of input with only keys that the Hash has returns a Hash without those values doesn't change the original Hash with keys that the Hash doesn't have returns a Hash without the values that it had keys for doesn't change the original Hash Immutable::Hash #fetch gives precedence to default block over default argument if passed both raises an ArgumentError when not passed one or 2 arguments with no default provided when the key exists returns the value associated with the key when the key does not exist raises a KeyError with a default value when the key exists returns the value associated with the key when the key does not exist returns the default value with a default block when the key exists returns the value associated with the key when the key does not exist invokes the default block with the missing key as paramter Immutable::Hash #fetch_values when the all the requested keys exist returns a vector of values for the given keys when the key does not exist raises a KeyError Immutable::Hash #find stops iterating when the block returns true on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["B", "bee"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns [nil, "NIL"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns nil without a block returns an Enumerator #detect stops iterating when the block returns true on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye"}] with a block returns nil without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["A", "aye"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns ["B", "bee"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns [nil, "NIL"] without a block returns an Enumerator on [{"A"=>"aye", "B"=>"bee", nil=>"NIL"}] with a block returns nil without a block returns an Enumerator Immutable::Hash #flat_map yields each key/val pair returns the concatenation of block return values doesn't change the receiver returns an empty array if only empty arrays are returned by block with no block returns an Enumerator Immutable::Hash #flatten with flatten depth of zero returns a vector of keys/value without array keys or values returns a vector of keys and values doesn't modify the receiver on an empty Hash returns an empty Vector with array keys flattens array keys into returned vector if flatten depth is sufficient doesn't modify the receiver (or its contents) with array values flattens array values into returned vector if flatten depth is sufficient doesn't modify the receiver (or its contents) with vector keys flattens vector keys into returned vector if flatten depth is sufficient with vector values flattens vector values into returned vector if flatten depth is sufficient Immutable::Hash #get uses #hash to look up keys uses #eql? to compare keys with the same hash code does not use #eql? to compare keys with different hash codes with a default block when the key exists returns the value associated with the key does not call the default block even if the key is 'nil' when the key does not exist returns the value from the default block with no default block returns the value ("aye") for an existing key ("A") returns the value ("bee") for an existing key ("B") returns the value ("see") for an existing key ("C") returns the value ("NIL") for an existing key (nil) returns nil for a non-existing key #[] uses #hash to look up keys uses #eql? to compare keys with the same hash code does not use #eql? to compare keys with different hash codes with a default block when the key exists returns the value associated with the key does not call the default block even if the key is 'nil' when the key does not exist returns the value from the default block with no default block returns the value ("aye") for an existing key ("A") returns the value ("bee") for an existing key ("B") returns the value ("see") for an existing key ("C") returns the value ("NIL") for an existing key (nil) returns nil for a non-existing key Immutable::Hash #key? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #has_key? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #include? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false #member? returns true for an existing key ("A") returns true for an existing key ("B") returns true for an existing key ("C") returns true for an existing key (nil) returns true for an existing key (2.0) returns false for a non-existing key uses #eql? for equality returns true if the key is found and maps to nil returns true if the key is found and maps to false Immutable::Hash #value? returns true if any key/val pair in Hash has the same value returns false if no key/val pair in Hash has the same value uses #== to check equality works on a large hash #has_value? returns true if any key/val pair in Hash has the same value returns false if no key/val pair in Hash has the same value uses #== to check equality works on a large hash Immutable::Hash #hash values are sufficiently distributed differs given the same keys and different values differs given the same values and different keys generates the same hash value for a hash regardless of the order things were added to it on an empty hash returns 0 Immutable::Hash #inspect on [] returns "Immutable::Hash[]" on [{"A"=>"aye"}] returns "Immutable::Hash[\"A\" => \"aye\"]" on [{"A"=>"aye", "B"=>"bee", "C"=>"see"}] returns "Immutable::Hash[\"A\" => \"aye\", \"B\" => \"bee\", \"C\" => \"see\"]" on {} returns a string which can be eval'd to get an equivalent object on {"A"=>"aye"} returns a string which can be eval'd to get an equivalent object on {:a=>"aye", :b=>"bee", :c=>"see"} returns a string which can be eval'd to get an equivalent object Immutable::Hash #invert uses the existing keys as values and values as keys will select one key/value pair among multiple which have same value doesn't change the original Hash from a subclass of Hash returns an instance of the subclass Immutable::Hash #key returns a key associated with the given value, if there is one returns nil if there is no key associated with the given value uses #== to compare values for equality doesn't use default block if value is not found Immutable::Hash #keys returns the keys as a set returns frozen String keys Immutable::Hash #map when empty returns self when not empty with a block preserves the original values returns a new hash with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass #collect when empty returns self when not empty with a block preserves the original values returns a new hash with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass Immutable::Hash #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by key after loading Immutable::Hash #merge sets any duplicate key to the value of block if passed a block yields key/value pairs in the same order as #each for {} and {} returns {} when passed an Immutable::Hash returns {} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {} returns {"A"=>"aye"} when passed an Immutable::Hash returns {"A"=>"aye"} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {"A"=>"bee"} returns {"A"=>"bee"} when passed an Immutable::Hash returns {"A"=>"bee"} when passed a Ruby Hash doesn't change the original Hashes for {"A"=>"aye"} and {"B"=>"bee"} returns {"A"=>"aye", "B"=>"bee"} when passed an Immutable::Hash returns {"A"=>"aye", "B"=>"bee"} when passed a Ruby Hash doesn't change the original Hashes for [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300]] and [[150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] returns [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] when passed an Immutable::Hash returns [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25], [26, 26], [27, 27], [28, 28], [29, 29], [30, 30], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 92], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 126], [127, 127], [128, 128], [129, 129], [130, 130], [131, 131], [132, 132], [133, 133], [134, 134], [135, 135], [136, 136], [137, 137], [138, 138], [139, 139], [140, 140], [141, 141], [142, 142], [143, 143], [144, 144], [145, 145], [146, 146], [147, 147], [148, 148], [149, 149], [150, 150], [151, 151], [152, 152], [153, 153], [154, 154], [155, 155], [156, 156], [157, 157], [158, 158], [159, 159], [160, 160], [161, 161], [162, 162], [163, 163], [164, 164], [165, 165], [166, 166], [167, 167], [168, 168], [169, 169], [170, 170], [171, 171], [172, 172], [173, 173], [174, 174], [175, 175], [176, 176], [177, 177], [178, 178], [179, 179], [180, 180], [181, 181], [182, 182], [183, 183], [184, 184], [185, 185], [186, 186], [187, 187], [188, 188], [189, 189], [190, 190], [191, 191], [192, 192], [193, 193], [194, 194], [195, 195], [196, 196], [197, 197], [198, 198], [199, 199], [200, 200], [201, 201], [202, 202], [203, 203], [204, 204], [205, 205], [206, 206], [207, 207], [208, 208], [209, 209], [210, 210], [211, 211], [212, 212], [213, 213], [214, 214], [215, 215], [216, 216], [217, 217], [218, 218], [219, 219], [220, 220], [221, 221], [222, 222], [223, 223], [224, 224], [225, 225], [226, 226], [227, 227], [228, 228], [229, 229], [230, 230], [231, 231], [232, 232], [233, 233], [234, 234], [235, 235], [236, 236], [237, 237], [238, 238], [239, 239], [240, 240], [241, 241], [242, 242], [243, 243], [244, 244], [245, 245], [246, 246], [247, 247], [248, 248], [249, 249], [250, 250], [251, 251], [252, 252], [253, 253], [254, 254], [255, 255], [256, 256], [257, 257], [258, 258], [259, 259], [260, 260], [261, 261], [262, 262], [263, 263], [264, 264], [265, 265], [266, 266], [267, 267], [268, 268], [269, 269], [270, 270], [271, 271], [272, 272], [273, 273], [274, 274], [275, 275], [276, 276], [277, 277], [278, 278], [279, 279], [280, 280], [281, 281], [282, 282], [283, 283], [284, 284], [285, 285], [286, 286], [287, 287], [288, 288], [289, 289], [290, 290], [291, 291], [292, 292], [293, 293], [294, 294], [295, 295], [296, 296], [297, 297], [298, 298], [299, 299], [300, 300], [301, 301], [302, 302], [303, 303], [304, 304], [305, 305], [306, 306], [307, 307], [308, 308], [309, 309], [310, 310], [311, 311], [312, 312], [313, 313], [314, 314], [315, 315], [316, 316], [317, 317], [318, 318], [319, 319], [320, 320], [321, 321], [322, 322], [323, 323], [324, 324], [325, 325], [326, 326], [327, 327], [328, 328], [329, 329], [330, 330], [331, 331], [332, 332], [333, 333], [334, 334], [335, 335], [336, 336], [337, 337], [338, 338], [339, 339], [340, 340], [341, 341], [342, 342], [343, 343], [344, 344], [345, 345], [346, 346], [347, 347], [348, 348], [349, 349], [350, 350], [351, 351], [352, 352], [353, 353], [354, 354], [355, 355], [356, 356], [357, 357], [358, 358], [359, 359], [360, 360], [361, 361], [362, 362], [363, 363], [364, 364], [365, 365], [366, 366], [367, 367], [368, 368], [369, 369], [370, 370], [371, 371], [372, 372], [373, 373], [374, 374], [375, 375], [376, 376], [377, 377], [378, 378], [379, 379], [380, 380], [381, 381], [382, 382], [383, 383], [384, 384], [385, 385], [386, 386], [387, 387], [388, 388], [389, 389], [390, 390], [391, 391], [392, 392], [393, 393], [394, 394], [395, 395], [396, 396], [397, 397], [398, 398], [399, 399], [400, 400], [401, 401], [402, 402], [403, 403], [404, 404], [405, 405], [406, 406], [407, 407], [408, 408], [409, 409], [410, 410], [411, 411], [412, 412], [413, 413], [414, 414], [415, 415], [416, 416], [417, 417], [418, 418], [419, 419], [420, 420], [421, 421], [422, 422], [423, 423], [424, 424], [425, 425], [426, 426], [427, 427], [428, 428], [429, 429], [430, 430], [431, 431], [432, 432], [433, 433], [434, 434], [435, 435], [436, 436], [437, 437], [438, 438], [439, 439], [440, 440], [441, 441], [442, 442], [443, 443], [444, 444], [445, 445], [446, 446], [447, 447], [448, 448], [449, 449], [450, 450]] when passed a Ruby Hash doesn't change the original Hashes when merging with an empty Hash returns self when merging with subset Hash returns self when called on a subclass returns an instance of the subclass Immutable::Hash #min returns the smallest key/val pair #max returns the largest key/val pair #min_by returns the smallest key/val pair (after passing it through a key function) returns the first key/val pair yielded by #each in case of a tie returns nil if the hash is empty #max_by returns the largest key/val pair (after passing it through a key function) returns the first key/val pair yielded by #each in case of a tie returns nil if the hash is empty Immutable::Hash .new is amenable to overriding of #initialize accepts an array as initializer returns a Hash which doesn't change even if initializer is mutated from a subclass returns a frozen instance of the subclass .[] accepts a Ruby Hash as initializer accepts a Immutable::Hash as initializer accepts an array as initializer can be used with a subclass of Immutable::Hash Immutable::Hash #none? when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true (["A", "aye"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true (["B", "bee"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true (["C", "see"]) returns true if the block always returns false stops iterating as soon as the block returns true returns false if the block ever returns true ([nil, "NIL"]) returns true if the block always returns false stops iterating as soon as the block returns true with no block returns false Immutable::Hash #partition returns a pair of Immutable::Hashes returns key/val pairs for which predicate is true in first Hash returns key/val pairs for which predicate is false in second Hash doesn't modify the original Hash from a subclass should return instances of the subclass Immutable::Hash #pretty_print prints the whole Hash on one line if it fits prints each key/val pair on its own line, if not prints keys and vals on separate lines, if space is very tight Immutable::Hash #[]= raises error pointing to #put #put with a block passes the value to the block replaces the value with the result of the block supports to_proc methods if there is no existing association passes nil to the block stores the result of the block as the new value with a unique key preserves the original returns a copy with the superset of key/value pairs with a duplicate key preserves the original returns a copy with the superset of key/value pairs with duplicate key and identical value returns the original hash unmodified with big hash (force nested tries) returns the original hash unmodified for all changes with unequal keys which hash to the same value stores and can retrieve both when a String is inserted as key and then mutated is not affected Immutable::Hash #reduce when empty returns the memo when not empty with a block returns the final memo with no block uses a passed string as the name of a method to use instead uses a passed symbol as the name of a method to use instead #inject when empty returns the memo when not empty with a block returns the final memo with no block uses a passed string as the name of a method to use instead uses a passed symbol as the name of a method to use instead Immutable::Hash #reject when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values yields entries in the same order as #each with no block returns an Enumerator on a large hash, with many combinations of input still works #delete_if when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values yields entries in the same order as #each with no block returns an Enumerator on a large hash, with many combinations of input still works Immutable::Hash #reverse_each with a block returns self yields all key/value pairs in the opposite order as #each with no block returns an Enumerator Immutable::Hash #sample returns a randomly chosen item Immutable::Hash #select works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator #find_all works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator #keep_if works on a large hash, with many combinations of input when everything matches returns self when only some things match yields entries as [key, value] pairs with a block preserves the original returns a set with the matching values with no block returns an Enumerator Immutable::Hash #size returns 0 for [] returns 1 for [{"A"=>"aye"}] returns 3 for [{"A"=>"bee", "B"=>"bee", "C"=>"see"}] has the correct size after adding lots of things with colliding keys and such has the correct size after lots of addings and removings #length returns 0 for [] returns 1 for [{"A"=>"aye"}] returns 3 for [{"A"=>"bee", "B"=>"bee", "C"=>"see"}] has the correct size after adding lots of things with colliding keys and such has the correct size after lots of addings and removings Immutable::Hash #slice with all keys present in the Hash returns the sliced values doesn't modify the original Hash with keys aren't present in the Hash returns the sliced values of the matching keys doesn't modify the original Hash on a Hash with a default block maintains the default block Immutable::Hash #sort returns a Vector of sorted key/val pairs works on large hashes uses block as comparator to sort if passed a block #sort_by returns a Vector of key/val pairs, sorted using the block as a key function Immutable::Hash #store with a unique key preserves the original returns a copy with the superset of key/value pairs with a duplicate key preserves the original returns a copy with the superset of key/value pairs with duplicate key and identical value returns the original hash unmodified with big hash (force nested tries) returns the original hash unmodified for all changes with unequal keys which hash to the same value stores and can retrieve both when a String is inserted as key and then mutated is not affected Immutable::Hash #<= for {} and {} returns true for {"A"=>1} and {} returns false for {} and {"A"=>1} returns true for {"A"=>1} and {"A"=>1} returns true for {"A"=>1} and {"A"=>2} returns false for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns true for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns false for {"B"=>0} and {"A"=>1, "B"=>2, "C"=>3} returns false #< for {} and {} returns false for {"A"=>1} and {} returns false for {} and {"A"=>1} returns true for {"A"=>1} and {"A"=>1} returns false for {"A"=>1} and {"A"=>2} returns false for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns true for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns false for {"B"=>0} and {"A"=>1, "B"=>2, "C"=>3} returns false Immutable::Hash #>= for {} and {} returns true for {"A"=>1} and {} returns true for {} and {"A"=>1} returns false for {"A"=>1} and {"A"=>1} returns true for {"A"=>1} and {"A"=>2} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns true for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>0} returns false #> for {} and {} returns false for {"A"=>1} and {} returns true for {} and {"A"=>1} returns false for {"A"=>1} and {"A"=>1} returns false for {"A"=>1} and {"A"=>2} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>2} returns true for {"B"=>2} and {"A"=>1, "B"=>2, "C"=>3} returns false for {"A"=>1, "B"=>2, "C"=>3} and {"B"=>0} returns false Immutable::Hash #take returns the first N key/val pairs from hash #take_while passes elements to the block until the block returns nil/false returns an array of all elements before the one which returned nil/false passes all elements if the block never returns nil/false Immutable::Hash #to_a returns an Array of [key, value] pairs in same order as #each Immutable::Hash #to_hash converts an empty Immutable::Hash to an empty Ruby Hash converts a non-empty Immutable::Hash to a Hash with the same keys and values doesn't modify the receiver #to_h converts an empty Immutable::Hash to an empty Ruby Hash converts a non-empty Immutable::Hash to a Hash with the same keys and values doesn't modify the receiver Immutable::Hash #to_proc on Hash without default proc returns a Proc instance returns a Proc that returns the value of an existing key returns a Proc that returns nil for a missing key on Hash with a default proc returns a Proc instance returns a Proc that returns the value of an existing key returns a Proc that returns the result of the hash's default proc for a missing key Immutable::Hash #update_in with one level on existing key passes the value to the block replaces the value with the result of the block should preserve the original with multi-level on existing keys passes the value to the block replaces the value with the result of the block should preserve the original with multi-level creating sub-hashes when keys don't exist passes nil to the block creates subhashes on the way to set the value with multi-level including vector with existing keys passes the value to the block replaces the value with the result of the block should preserve the original with empty key_path raises ArguemntError Immutable::Hash #values_at on Hash without default proc returns an empty vector when no keys are given returns a vector of values for the given keys fills nil when keys are missing on Hash with default proc fills the result of the default proc when keys are missing Immutable::Hash #values returns the keys as a Vector with duplicates returns the keys as a Vector Immutable::List #add on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] Immutable::List #all? on a really big list doesn't run out of stack when empty with a block returns true with no block returns true when not empty with a block if the block always returns true returns true if the block ever returns false returns false with no block if all values are truthy returns true if any value is nil returns false if any value is false returns false Immutable::List #any? on a really big list doesn't run out of stack when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true ("A") returns true if the block ever returns true ("B") returns true if the block ever returns true ("C") returns true if the block ever returns true (nil) returns false if the block always returns false with no block returns true if any value is truthy returns false if all values are falsey Immutable::List #append is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] #concat is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] #+ is lazy on [] and [] preserves the left preserves the right returns [] on ["A"] and [] preserves the left preserves the right returns ["A"] on [] and ["A"] preserves the left preserves the right returns ["A"] on ["A", "B"] and ["C", "D"] preserves the left preserves the right returns ["A", "B", "C", "D"] Immutable::List #at on a really big list doesn't run out of stack [] with 10 returns nil ["A"] with 10 returns nil ["A", "B", "C"] with 0 returns "A" ["A", "B", "C"] with 2 returns "C" ["A", "B", "C"] with -1 returns "C" ["A", "B", "C"] with -2 returns "B" ["A", "B", "C"] with -4 returns nil Immutable::List #break is lazy on [] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty on [4] with a block preserves the original returns a frozen array with two items correctly identifies the prefix correctly identifies the remainder without a block returns a frozen array with two items returns self as the prefix leaves the remainder empty Immutable::List #car is responded to on [] preserves the original returns nil #car is responded to on ["A"] preserves the original returns "A" #car is responded to on ["A", "B", "C"] preserves the original returns "A" #cadr is responded to on ["A", "B", "C"] preserves the original returns "B" #caddr is responded to on ["A", "B", "C"] preserves the original returns "C" #cadddr is responded to on ["A", "B", "C"] preserves the original returns nil #caddddr is responded to on ["A", "B", "C"] preserves the original returns nil #cdr is responded to on [] preserves the original returns Immutable::List[] #cdr is responded to on ["A"] preserves the original returns Immutable::List[] #cdr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List["B", "C"] #cddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List["C"] #cdddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List[] #cddddr is responded to on ["A", "B", "C"] preserves the original returns Immutable::List[] Immutable::List #chunk is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A", "B"], Immutable::List["C"]] Immutable::List #clear on [] preserves the original returns an empty list on ["A"] preserves the original returns an empty list on ["A", "B", "C"] preserves the original returns an empty list Immutable::List #combination is lazy on ["A", "B", "C", "D"] in groups of 1 preserves the original returns [Immutable::List["A"], Immutable::List["B"], Immutable::List["C"], Immutable::List["D"]] on ["A", "B", "C", "D"] in groups of 2 preserves the original returns [Immutable::List["A", "B"], Immutable::List["A", "C"], Immutable::List["A", "D"], Immutable::List["B", "C"], Immutable::List["B", "D"], Immutable::List["C", "D"]] on ["A", "B", "C", "D"] in groups of 3 preserves the original returns [Immutable::List["A", "B", "C"], Immutable::List["A", "B", "D"], Immutable::List["A", "C", "D"], Immutable::List["B", "C", "D"]] on ["A", "B", "C", "D"] in groups of 4 preserves the original returns [Immutable::List["A", "B", "C", "D"]] on ["A", "B", "C", "D"] in groups of 0 preserves the original returns [Immutable::List[]] on ["A", "B", "C", "D"] in groups of 5 preserves the original returns [] on [] in groups of 0 preserves the original returns [Immutable::List[]] on [] in groups of 1 preserves the original returns [] Immutable::List #compact is lazy on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on [nil] preserves the original returns [] on [nil, "B"] preserves the original returns ["B"] on ["A", nil] preserves the original returns ["A"] on [nil, nil] preserves the original returns [] on ["A", nil, "C"] preserves the original returns ["A", "C"] on [nil, "B", nil] preserves the original returns ["B"] Immutable::List #<=> with [] and [1] returns -1 with [1] and [] returns 1 with [] and [] returns 0 with [1] and [2] returns -1 with [2] and [1] returns 1 with [1] and [1] returns 0 with [1] and [1, 2] returns -1 with [1, 2] and [1] returns 1 with [1] and [1] returns 0 with [2, 3, 4] and [3, 4, 5] returns -1 with [3, 4, 5] and [2, 3, 4] returns 1 with [2, 3, 4] and [2, 3, 4] returns 0 Immutable::List #cons on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] Immutable .list with no arguments always returns the same instance returns an empty list with a number of items always returns a different instance is the same as repeatedly using #cons .stream with no block returns an empty list with a block repeatedly calls the block .interval for numbers is equivalent to a list with explicit values for strings is equivalent to a list with explicit values .repeat returns an infinite list with specified value for each element .replicate returns a list with the specified value repeated the specified number of times .iterate returns an infinite list where the first item is calculated by applying the block on the initial argument, the second item by applying the function on the previous result and so on .enumerate returns a list based on the values yielded from the enumerator realizes values as they are needed [] takes a variable number of items and returns a list returns an empty list when called without arguments Immutable::List on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::List #count on a really big list doesn't run out of stack on [] with a block returns 0 without a block returns length on [1] with a block returns 1 without a block returns length on [1, 2] with a block returns 1 without a block returns length on [1, 2, 3] with a block returns 2 without a block returns length on [1, 2, 3, 4] with a block returns 2 without a block returns length on [1, 2, 3, 4, 5] with a block returns 3 without a block returns length Immutable #cycle is lazy with an empty list returns an empty list with a non-empty list preserves the original infinitely cycles through all values Immutable::List #delete_at removes the element at the specified index makes no modification if the index is out of range Immutable::List #delete removes elements that are #== to the argument Immutable::List #drop is lazy with 10 from [] preserves the original returns [] with 10 from ["A"] preserves the original returns [] with -1 from ["A"] preserves the original returns ["A"] with 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] with 2 from ["A", "B", "C"] preserves the original returns ["C"] Immutable::List #drop_while is lazy on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator Immutable::List #each_chunk on a really big list doesn't run out of stack on [] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A", "B", "C"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator #each_slice on a really big list doesn't run out of stack on [] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator on ["A", "B", "C"] with a block preserves the original iterates over the items in order returns self without a block preserves the original returns an Enumerator Immutable::List #each on a really big list doesn't run out of stack on [] with a block iterates over the items in order returns nil without a block returns an Enumerator on ["A"] with a block iterates over the items in order returns nil without a block returns an Enumerator on ["A", "B", "C"] with a block iterates over the items in order returns nil without a block returns an Enumerator Immutable::List #each_with_index with no block returns an Enumerator with a block returns self iterates over the items in order, yielding item and index Immutable::List #empty? on a really big list doesn't run out of stack on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false Immutable::List Immutable::List["A", "B", "C"] should == ["A", "B", "C"] Immutable::List["A", "B", "C"] should not eql? ["A", "B", "C"] Immutable::List["A", "B", "C"] should not == # Immutable::List["A", "B", "C"] should not eql? # Immutable::List[] should == [] Immutable::List[] should not eql? [] Immutable::List[] should eql? Immutable::List[] Immutable::List[] should == Immutable::List[] Immutable::List[] should not eql? Immutable::List[nil] Immutable::List["A"] should not eql? Immutable::List[] Immutable::List["A"] should eql? Immutable::List["A"] Immutable::List["A"] should == Immutable::List["A"] Immutable::List["A"] should not eql? Immutable::List["B"] Immutable::List["A", "B"] should not eql? Immutable::List["A"] Immutable::List["A", "B", "C"] should eql? Immutable::List["A", "B", "C"] Immutable::List["A", "B", "C"] should == Immutable::List["A", "B", "C"] Immutable::List["C", "A", "B"] should not eql? Immutable::List["A", "B", "C"] Immutable::List["A"] should == ["A"] ["A"] should == Immutable::List["A"] Immutable::List["A"] should not eql? ["A"] ["A"] should not eql? Immutable::List["A"] #eql? on a really big list doesn't run out of stack Immutable::List #fill can replace a range of items at the beginning of a list can replace a range of items in the middle of a list can replace a range of items at the end of a list can replace all the items in a list can fill past the end of the list is lazy with 1 argument replaces all the items in the list by default with 2 arguments replaces up to the end of the list by default when index and length are 0 leaves the list unmodified Immutable::List #find_all is lazy with an empty array with a block preserves the original returns the found list without a block returns an Enumerator with a single item array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item single find_allable array with a block preserves the original returns the found list without a block returns an Enumerator with a multi-item multi-find_allable array with a block preserves the original returns the found list without a block returns an Enumerator Immutable::List #find_index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 #index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 Immutable::List #find on a really big list doesn't run out of stack on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator #detect on a really big list doesn't run out of stack on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator Immutable::List #flat_map with an empty list returns the flattened values as a Immutable::List returns a Immutable::List with a block that returns an empty list returns the flattened values as a Immutable::List returns a Immutable::List with a list of one item returns the flattened values as a Immutable::List returns a Immutable::List with a list of multiple items returns the flattened values as a Immutable::List returns a Immutable::List Immutable #flatten is lazy on [] preserves the original returns an empty list on ["A"] preserves the original returns an empty list on ["A", "B", "C"] preserves the original returns an empty list on ["A", Immutable::List["B"], "C"] preserves the original returns an empty list on [Immutable::List["A"], Immutable::List["B"], Immutable::List["C"]] preserves the original returns an empty list Immutable::List #grep is lazy without a block on [] returns [] on ["A"] returns ["A"] on [1] returns [] on ["A", 2, "C"] returns ["A", "C"] with a block on [] preserves the original returns [] on ["A"] preserves the original returns ["a"] on [1] preserves the original returns [] on ["A", 2, "C"] preserves the original returns ["a", "c"] Immutable::List #group_by on a really big list doesn't run out of stack with a block on [] returns [] on [1] returns [{true=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::List[3, 1], false=>Immutable::List[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::List[1], 2=>Immutable::List[2], 3=>Immutable::List[3], 4=>Immutable::List[4]}] #group on a really big list doesn't run out of stack with a block on [] returns [] on [1] returns [{true=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::List[3, 1], false=>Immutable::List[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::List[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::List[1], 2=>Immutable::List[2], 3=>Immutable::List[3], 4=>Immutable::List[4]}] Immutable::List #hash values are sufficiently distributed on a really big list doesn't run out of stack on an empty list returns 0 Immutable::List #head on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" Immutable::List #include? on a really big list doesn't run out of stack on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true #member? on a really big list doesn't run out of stack on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true Immutable::List #index on a really big list doesn't run out of stack looking for "A" in [] returns nil looking for nil in [] returns nil looking for "A" in ["A"] returns 0 looking for "B" in ["A"] returns nil looking for nil in ["A"] returns nil looking for "A" in ["A", "B", nil] returns 0 looking for "B" in ["A", "B", nil] returns 1 looking for nil in ["A", "B", nil] returns 2 looking for "C" in ["A", "B", nil] returns nil looking for 2 in [2] returns 0 looking for 2.0 in [2] returns 0 looking for 2.0 in [2.0] returns 0 looking for 2 in [2.0] returns 0 Immutable::List #indices when called with a block is lazy on a large list which doesn't contain desired item doesn't blow the stack looking for "A" in [] returns [] looking for "B" in ["A"] returns [] looking for "B" in ["A", "B", "A"] returns [1] looking for "A" in ["A", "B", "A"] returns [0, 2] looking for 2 in [2] returns [0] looking for 2.0 in [2] returns [0] looking for 2.0 in [2.0] returns [0] looking for 2 in [2.0] returns [0] when called with a single argument is lazy looking for "A" in [] returns [] looking for "B" in ["A"] returns [] looking for "B" in ["A", "B", "A"] returns [1] looking for "A" in ["A", "B", "A"] returns [0, 2] looking for 2 in [2] returns [0] looking for 2.0 in [2] returns [0] looking for 2.0 in [2.0] returns [0] looking for 2 in [2.0] returns [0] Immutable::List #init is lazy on [] preserves the original returns the list without the last element: [] on ["A"] preserves the original returns the list without the last element: [] on ["A", "B", "C"] preserves the original returns the list without the last element: ["A", "B"] Immutable::List #inits is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A"], Immutable::List["A", "B"], Immutable::List["A", "B", "C"]] Immutable::List #insert can add items at the beginning of a list can add items in the middle of a list can add items at the end of a list can add items past the end of a list accepts a negative index, which counts back from the end of the list raises IndexError if a negative index is too great is lazy Immutable::List #inspect on a really big list doesn't run out of stack on [] returns "Immutable::List[]" returns a string which can be eval'd to get an equivalent object on ["A"] returns "Immutable::List[\"A\"]" returns a string which can be eval'd to get an equivalent object on ["A", "B", "C"] returns "Immutable::List[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent object Immutable::List #intersperse is lazy on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "|", "B", "|", "C"] Immutable::List #join on a really big list doesn't run out of stack with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) uses the default global separator Immutable::List #last on a really big list doesn't run out of stack on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "C" Immutable::List #<< adds an item onto the end of a list on an empty list returns a list with one item Immutable::List #map is lazy on [] with a block preserves the original returns [] is lazy without a block returns an Enumerator on ["A"] with a block preserves the original returns ["a"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["a", "b", "c"] is lazy without a block returns an Enumerator #collect is lazy on [] with a block preserves the original returns [] is lazy without a block returns an Enumerator on ["A"] with a block preserves the original returns ["a"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["a", "b", "c"] is lazy without a block returns an Enumerator Immutable::List #max on a really big list doesn't run out of stack with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::List without a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on natural sort order with a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on the specified transformer Immutable::List without a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on natural sort order with a comparator on an empty list returns an empty list on a single list returns the list with multiple lists merges the lists based on the specified comparator Immutable::List #min on a really big list doesn't run out of stack with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::List ensures each node of a lazy list will only be realized on ONE thread, even when accessed by multiple threads doesn't go into an infinite loop if lazy list block raises an exception doesn't give horrendously bad performance if thread realizing the list sleeps Immutable::List #none? on a really big list doesn't run out of stack when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true ("A") returns false if the block ever returns true ("B") returns false if the block ever returns true ("C") returns false if the block ever returns true (nil) returns true if the block always returns false with no block returns false if any value is truthy returns true if all values are falsey Immutable::List #one? on a really big list doesn't run out of stack when empty with a block returns false with no block returns false when not empty with a block returns false if the block returns true more than once returns false if the block never returns true returns true if the block only returns true once with no block returns false if more than one value is truthy returns true if only one value is truthy Immutable::List #partition is lazy calls the passed block only once for each item returns a lazy list of items for which predicate is true returns a lazy list of items for which predicate is false calls the passed block only once for each item, even with multiple threads on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::List #permutation with no block returns an Enumerator with no argument yields all permutations of the list with a length argument yields all N-size permutations of the list with a length argument greater than length of list yields nothing with a length argument of 0 yields an empty list with a block returns the original list Immutable::List #pop with an empty list returns an empty list with a list with a few items removes the last item Immutable::List #product on a really big list doesn't run out of stack on [] returns 1 on [2] returns 2 on [1, 3, 5, 7, 11] returns 1155 Immutable::List #reduce on a really big list doesn't run out of stack on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on a really big list doesn't run out of stack on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::List #reject is lazy on [] with a block returns [] is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] is lazy without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] is lazy without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] is lazy without a block returns an Enumerator #delete_if is lazy on [] with a block returns [] is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] is lazy without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] is lazy without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] is lazy without a block returns an Enumerator Immutable::List #reverse is lazy on a really big list doesn't run out of stack on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["C", "B", "A"] Immutable::List #rotate when passed no argument returns a new list with the first element moved to the end with an integral argument n returns a new list with the first (n % size) elements moved to the end with a non-numeric argument raises a TypeError with an argument of zero (or one evenly divisible by list length) it returns self Immutable::List #sample returns a randomly chosen item Immutable::List #select is lazy with an empty array with a block preserves the original returns the selected list without a block returns an Enumerator with a single item array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item single selectable array with a block preserves the original returns the selected list without a block returns an Enumerator with a multi-item multi-selectable array with a block preserves the original returns the selected list without a block returns an Enumerator Immutable::List #size on a really big list doesn't run out of stack on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 #length on a really big list doesn't run out of stack on [] returns 0 on ["A"] returns 1 on ["A", "B", "C"] returns 3 Immutable::List #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the list when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the list when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range Immutable::List #sort is lazy on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] #sort_by is lazy on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] List#span is lazy given a predicate (in the form of a block), splits the list into two lists (returned as an array) such that elements in the first list (the prefix) are taken from the head of the list while the predicate is satisfied, and elements in the second list (the remainder) are the remaining elements from the list once the predicate is not satisfied. For example: given the list [] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2, 3] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [3] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [1, 2, 3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [1, 2] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [2, 3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [2] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [3, 4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [3, 4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder given the list [4] and a predicate that returns true for values <= 2 preserves the original returns the prefix as [] returns the remainder as [4] calls the block only once for each element without a predicate returns a frozen array returns self as the prefix returns an empty list as the remainder Immutable::List #split_at is lazy on [] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2, 3] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder on [1, 2, 3, 4] preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder Immutable::List #subsequences yields all sublists with 1 or more consecutive items with no block returns an Enumerator Immutable::List #sum on a really big list doesn't run out of stack on [] returns 0 on [2] returns 2 on [1, 3, 5, 7, 11] returns 27 Immutable::List #tail on a really big list doesn't run out of stack on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] Immutable::List #tails is lazy on [] preserves the original returns [] on ["A"] preserves the original returns [Immutable::List["A"]] on ["A", "B", "C"] preserves the original returns [Immutable::List["A", "B", "C"], Immutable::List["B", "C"], Immutable::List["C"]] Immutable::List #take is lazy 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] -1 from ["A"] preserves the original returns [] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] Immutable::List #take_while is lazy on [] with a block returns [] preserves the original is lazy without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original is lazy without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original is lazy without a block returns an Enumerator Immutable::List #to_a on a really big list doesn't run out of stack on [] returns [] leaves the original unchanged returns a mutable array on ["A"] returns ["A"] leaves the original unchanged returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] leaves the original unchanged returns a mutable array #entries on a really big list doesn't run out of stack on [] returns [] leaves the original unchanged returns a mutable array on ["A"] returns ["A"] leaves the original unchanged returns a mutable array on ["A", "B", "C"] returns ["A", "B", "C"] leaves the original unchanged returns a mutable array Immutable::List #to_ary on a really big list doesn't run out of stack enables implicit conversion to block parameters method arguments works with splat Immutable::List #to_list on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::List #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values Immutable::List #transpose takes a list of lists and returns a list of all the first elements, all the 2nd elements, and so on only goes as far as the shortest list Immutable::List #union is lazy returns [] for [] and [] for [] and [] returns ["A"] for ["A"] and [] for [] and ["A"] returns ["A", "B", "C"] for ["A", "B", "C"] and [] for [] and ["A", "B", "C"] returns ["A"] for ["A", "A"] and ["A"] for ["A"] and ["A", "A"] #| is lazy returns [] for [] and [] for [] and [] returns ["A"] for ["A"] and [] for [] and ["A"] returns ["A", "B", "C"] for ["A", "B", "C"] and [] for [] and ["A", "B", "C"] returns ["A"] for ["A", "A"] and ["A"] for ["A"] and ["A", "A"] Immutable::List #uniq is lazy when passed a block uses the block to identify duplicates on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on ["A", "B", "A", "C", "C"] preserves the original returns ["A", "B", "C"] Immutable::List #zip is lazy on [] and [] returns [] on ["A"] and ["aye"] returns [Immutable::List["A", "aye"]] on ["A"] and [] returns [Immutable::List["A", nil]] on [] and ["A"] returns [Immutable::List[nil, "A"]] on ["A", "B", "C"] and ["aye", "bee", "see"] returns [Immutable::List["A", "aye"], Immutable::List["B", "bee"], Immutable::List["C", "see"]] Immutable .from with {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} as input should return Immutable::Hash["d" => Immutable::Set[5, 7, 6], "b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "h" => /ijk/, "a" => 1, "e" => Immutable::Hash["f" => 8, "g" => 9]] with {} as input should return Immutable::Hash[] with {"a"=>1, "b"=>2, "c"=>3} as input should return Immutable::Hash["c" => 3, "b" => 2, "a" => 1] with [] as input should return Immutable::Vector[] with [1, 2, 3] as input should return Immutable::Vector[1, 2, 3] with # as input should return Immutable::Set[] with # as input should return Immutable::Set[3, 1, 2] with 42 as input should return 42 with #> as input should return #> with # as input should return Immutable::Hash[:address => nil, :name => nil] with # as input should return Immutable::Hash[:address => "123 Main", :name => "Dave"] with mixed object should return Immutable data .to_ruby with Immutable::Hash["d" => Immutable::Set[5, 7, 6], "b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "h" => /ijk/, "a" => 1, "e" => Immutable::Hash["f" => 8, "g" => 9]] as input should return {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} with Immutable::Hash[] as input should return {} with Immutable::Hash["c" => 3, "b" => 2, "a" => 1] as input should return {"a"=>1, "b"=>2, "c"=>3} with Immutable::Vector[] as input should return [] with Immutable::Vector[1, 2, 3] as input should return [1, 2, 3] with Immutable::Set[] as input should return # with Immutable::Set[3, 1, 2] as input should return # with 42 as input should return 42 with #> as input should return #> with Immutable::Deque[] as input should return [] with Immutable::Deque[Immutable::Hash["a" => 1]] as input should return [{"a" => 1}] with Immutable::SortedSet[] as input should return ::SortedSet.new with Immutable::SortedSet[1, 2, 3] as input should return ::SortedSet.new with mixed object should return Ruby data structures Immutable::Set #add can add nil to a set works on large sets, with many combinations of input with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns self #<< can add nil to a set works on large sets, with many combinations of input with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns self #add? with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns false Immutable::Set #all? when empty with a block returns true with no block returns true when not empty with a block returns true if the block always returns true returns false if the block ever returns false propagates an exception from the block stops iterating as soon as the block returns false with no block returns true if all values are truthy returns false if any value is nil returns false if any value is false Immutable::Set #any? when empty with a block returns false with no block returns false when not empty with a block returns true if the block ever returns true ("A") returns true if the block ever returns true ("B") returns true if the block ever returns true ("C") returns true if the block ever returns true (nil) returns false if the block always returns false propagates exceptions raised in the block stops iterating as soon as the block returns true with no block returns true if any value is truthy returns false if all values are falsey Immutable::Set #clear on [] preserves the original returns an empty set on ["A"] preserves the original returns an empty set on ["A", "B", "C"] preserves the original returns an empty set from a subclass returns an empty instance of the subclass Immutable::Set #compact on [] preserves the original returns [] on ["A"] preserves the original returns ["A"] on ["A", "B", "C"] preserves the original returns ["A", "B", "C"] on [nil] preserves the original returns [] on [nil, "B"] preserves the original returns ["B"] on ["A", nil] preserves the original returns ["A"] on [nil, nil] preserves the original returns [] on ["A", nil, "C"] preserves the original returns ["A", "C"] on [nil, "B", nil] preserves the original returns ["B"] Immutable::Set .set with no values returns the empty set with a list of values is equivalent to repeatedly using #add Immutable::Set #dup returns self #clone returns self Immutable::Set #count works on large sets on [] with a block returns 0 without a block returns length on [1] with a block returns 1 without a block returns length on [1, 2] with a block returns 1 without a block returns length on [1, 2, 3] with a block returns 2 without a block returns length on [1, 2, 3, 4] with a block returns 2 without a block returns length on [1, 2, 3, 4, 5] with a block returns 3 without a block returns length Immutable::Set #delete works on large sets, with many combinations of input with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns self when removing the last value in a set returns the canonical empty set #delete? with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns false Immutable::Set #difference works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set #subtract works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set #- works on a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] doesn't modify the original Sets returns ["B"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "D", "E", "F", "G", "H"] and [] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F", "G", "H"] when passed a Ruby Array returns the expected Set for ["A", "B", "C", "M", "X", "Y", "Z"] and ["B", "C", "D", "E", "F", "G", "H", "I", "J", "X"] doesn't modify the original Sets returns ["A", "M", "Y", "Z"] when passed a Ruby Array returns the expected Set Immutable::Set #disjoint? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["D", "E"] returns true for ["F", "G", "H", "I"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["D", "E", "F", "G"] and ["A", "B", "C"] returns true Immutable::Set #each yields both of a pair of colliding keys without a block returns an Enumerator with an empty block returns self with a block yields all values Immutable::Set #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false on [nil] returns false on [false] returns false .empty returns the canonical empty set from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Set Immutable::Set #== when comparing to a standard set returns false when comparing to a arbitrary object returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true Immutable::Set #eql? when comparing to a standard set returns false when comparing to a arbitrary object returns false when comparing with a subclass of Immutable::Set returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true Immutable::Set #exclusion works for a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B", "C", "D"] doesn't modify the original Sets returns ["A", "D"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["D", "E", "F"] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F"] when passed a Ruby Array returns the expected Set #^ works for a wide variety of inputs for [] and [] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A"] and [] doesn't modify the original Sets returns ["A"] when passed a Ruby Array returns the expected Set for ["A"] and ["A"] doesn't modify the original Sets returns [] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] doesn't modify the original Sets returns ["A", "C"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B", "C", "D"] doesn't modify the original Sets returns ["A", "D"] when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["D", "E", "F"] doesn't modify the original Sets returns ["A", "B", "C", "D", "E", "F"] when passed a Ruby Array returns the expected Set Immutable::Set #find on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator #detect on [] with a block returns nil without a block returns an Enumerator on [] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns "A" without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A"] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns "A" without a block returns an Enumerator on ["A", "B", nil] with a block returns "B" without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator on ["A", "B", nil] with a block returns nil without a block returns an Enumerator Immutable::Set #first returns nil if only member of set is nil returns the first item yielded by #each on an empty set returns nil on a non-empty set returns an arbitrary value from the set Immutable #flatten on ["A"] preserves the original returns the inlined values on ["A", "B", "C"] preserves the original returns the inlined values on ["A", Immutable::Set["B"], "C"] preserves the original returns the inlined values on [Immutable::Set["A"], Immutable::Set["B"], Immutable::Set["C"]] preserves the original returns the inlined values on an empty set returns an empty set on a set with multiple levels of nesting inlines lower levels of nesting from a subclass returns an instance of the subclass Immutable::Set #grep without a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values with a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values Immutable::Set #grep_v without a block with an empty set returns the filtered values with a single item set returns the filtered values with a single item set that doesn't contain match returns the filtered values with a multi-item set where one isn't a match returns the filtered values with a block resulting items are processed with the block returns the filtered values Immutable::Set #group_by returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass #group returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass #classify returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Set[3, 1], false=>Immutable::Set[4, 2]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Set[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Set[1], 2=>Immutable::Set[2], 3=>Immutable::Set[3], 4=>Immutable::Set[4]}] on an empty set returns an empty hash from a subclass returns an Hash whose values are instances of the subclass Immutable::Set #hash generates the same hash value for a set regardless of the order things were added to it values are sufficiently distributed on an empty set returns 0 Immutable::Set #include? returns true for an existing value ("A") returns true for an existing value ("B") returns true for an existing value ("C") returns true for an existing value (2.0) returns true for an existing value (nil) returns false for a non-existing value returns true even if existing value is nil returns true even if existing value is false returns false for a mutable item which is mutated after adding uses #eql? for equality returns the right answers after a lot of addings and removings #member? returns true for an existing value ("A") returns true for an existing value ("B") returns true for an existing value ("C") returns true for an existing value (2.0) returns true for an existing value (nil) returns false for a non-existing value returns true even if existing value is nil returns true even if existing value is false returns false for a mutable item which is mutated after adding uses #eql? for equality returns the right answers after a lot of addings and removings Immutable::Set #inspect on [] returns "Immutable::Set[]" returns a string which can be eval'd to get an equivalent set on ["A"] returns "Immutable::Set[\"A\"]" returns a string which can be eval'd to get an equivalent set on ["A", "B", "C"] returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set from a subclass returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set Immutable::Set #intersect? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["D", "E"] returns false for ["F", "G", "H", "I"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["D", "E", "F", "G"] and ["A", "B", "C"] returns false Immutable::Set #intersection returns results consistent with Array#& for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and [] returns [], without changing the original Sets for [] and ["A"] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] returns ["B"], without changing the original Sets for ["B"] and ["A", "B", "C"] returns ["B"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"], without changing the original Sets for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set #& returns results consistent with Array#& for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and [] returns [], without changing the original Sets for [] and ["A"] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["B"] returns ["B"], without changing the original Sets for ["B"] and ["A", "B", "C"] returns ["B"], without changing the original Sets when passed a Ruby Array returns the expected Set for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"], without changing the original Sets for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set Immutable::Set #join with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) on ['A', 'B', 'C'] preserves the original returns nil Immutable::Set #map works on large sets when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass when multiple items map to the same value filters out the duplicates #collect works on large sets when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass when multiple items map to the same value filters out the duplicates Immutable::Set #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to test items by key after loading Immutable::Set #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::Set #min with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::Set .new initializes a new set accepts a Range returns a Set which doesn't change even if the initializer is mutated is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass [] accepts any number of arguments and initializes a new set Immutable::Set #none? when empty with a block returns true with no block returns true when not empty with a block returns false if the block ever returns true ("A") returns false if the block ever returns true ("B") returns false if the block ever returns true ("C") returns false if the block ever returns true (nil) returns true if the block always returns false stops iterating as soon as the block returns true with no block returns false if any value is truthy returns true if all values are falsey Immutable::Set #one? when empty with a block returns false with no block returns false when not empty with a block returns false if the block returns true more than once returns false if the block never returns true returns true if the block only returns true once with no block returns false if more than one value is truthy returns true if only one value is truthy returns false if no values are truthy Immutable::Set #partition on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::Set #product on [] returns 1 doesn't change the original Set on [2] returns 2 doesn't change the original Set on [1, 3, 5, 7, 11] returns 1155 doesn't change the original Set Immutable::Set #reduce on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns 6 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns 6 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::Set #reject when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns self on a large set, with many combinations of input still works #delete_if when nothing matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns self on a large set, with many combinations of input still works Immutable::Set #reverse_each without a block returns an Enumerator with an empty block returns self with a block yields all values Immutable::Set #sample returns a randomly chosen item Immutable::Set #select works on a large set, with many combinations of input when everything matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class #find_all works on a large set, with many combinations of input when everything matches returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class Immutable::Set #size returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] #length returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] Immutable::Set #sort on [] with a block returns [] doesn't change the original Set without a block returns [] doesn't change the original Set on ["A"] with a block returns ["A"] doesn't change the original Set without a block returns ["A"] doesn't change the original Set on ["Ichi", "Ni", "San"] with a block returns ["Ni", "San", "Ichi"] doesn't change the original Set without a block returns ["Ichi", "Ni", "San"] doesn't change the original Set #sort_by on [] with a block returns [] doesn't change the original Set without a block returns [] doesn't change the original Set on ["A"] with a block returns ["A"] doesn't change the original Set without a block returns ["A"] doesn't change the original Set on ["Ichi", "Ni", "San"] with a block returns ["Ni", "San", "Ichi"] doesn't change the original Set without a block returns ["Ichi", "Ni", "San"] doesn't change the original Set #sort_by calls the passed block no more than twice for each item Immutable::Set #subset? for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #<= for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #proper_subset? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #< for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false Immutable::Set #sum on [] returns 0 doesn't change the original Set on [2] returns 2 doesn't change the original Set on [1, 3, 5, 7, 11] returns 27 doesn't change the original Set Immutable::Set #superset? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #>= for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #proper_superset? for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #> for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true Immutable::Set #to_a on 'a'..'a' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'b' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'c' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'d' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'e' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'f' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'g' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'h' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'i' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'j' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'k' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'l' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'m' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'n' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'o' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'p' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'q' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'r' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'s' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'t' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'u' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'v' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'w' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'x' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'y' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'z' returns an equivalent array doesn't change the original Set returns a mutable array #entries on 'a'..'a' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'b' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'c' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'d' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'e' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'f' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'g' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'h' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'i' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'j' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'k' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'l' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'m' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'n' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'o' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'p' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'q' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'r' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'s' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'t' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'u' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'v' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'w' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'x' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'y' returns an equivalent array doesn't change the original Set returns a mutable array on 'a'..'z' returns an equivalent array doesn't change the original Set returns a mutable array Immutable::Set #to_list on [] returns a list doesn't change the original Set the returned list has the correct length contains all values on ["A"] returns a list doesn't change the original Set the returned list has the correct length contains all values on ["A", "B", "C"] returns a list doesn't change the original Set the returned list has the correct length contains all values Immutable::Set #to_set on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self Immutable::Set #union for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #| for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #+ for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self #merge for [] and [] returns [], without changing the original Sets for [] and [] returns [], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and [] returns ["A"], without changing the original Sets for [] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A"] and ["A"] returns ["A"], without changing the original Sets for ["A"] and ["A"] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for [] and ["A"] returns ["A"], without changing the original Sets for ["A"] and [] returns ["A"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and [] returns ["A", "B", "C"], without changing the original Sets for [] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets for ["A", "B", "C"] and ["A", "B", "C"] returns ["A", "B", "C"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass for ["A", "B", "C"] and ["X", "Y", "Z"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets for ["X", "Y", "Z"] and ["A", "B", "C"] returns ["A", "B", "C", "X", "Y", "Z"], without changing the original Sets when passed a Ruby Array returns the expected Set from a subclass returns an instance of the subclass when receiving a subset returns self Immutable::SortedSet #above when called without a block returns a sorted set of all items higher than the argument when called with a block yields all the items higher than the argument on an empty set returns an empty set with an argument higher than all the values in the set returns an empty set Immutable::SortedSet #add with a unique value preserves the original returns a copy with the superset of values (in order) with a duplicate value preserves the original values returns self on a set ordered by a comparator inserts the new item in the correct place #<< with a unique value preserves the original returns a copy with the superset of values (in order) with a duplicate value preserves the original values returns self on a set ordered by a comparator inserts the new item in the correct place #add? with a unique value preserves the original returns a copy with the superset of values with a duplicate value preserves the original values returns false Immutable::SortedSet #at [] with 10 returns nil ["A"] with 10 returns nil ["A", "B", "C"] with 0 returns "A" ["A", "B", "C"] with 1 returns "B" ["A", "B", "C"] with 2 returns "C" ["A", "B", "C"] with 3 returns nil ["A", "B", "C"] with -1 returns "C" ["A", "B", "C"] with -2 returns "B" ["A", "B", "C"] with -3 returns "A" ["A", "B", "C"] with -4 returns nil Immutable::SortedSet #below when called without a block returns a sorted set of all items lower than the argument when called with a block yields all the items lower than the argument on an empty set returns an empty set with an argument lower than all the values in the set returns an empty set Immutable::SortedSet #between when called without a block returns a sorted set of all items from the first argument to the second when called with a block yields all the items lower than the argument on an empty set returns an empty set with a 'to' argument lower than the 'from' argument returns an empty set Immutable::SortedSet #clear on [] preserves the original returns an empty set on ["A"] preserves the original returns an empty set on ["A", "B", "C"] preserves the original returns an empty set from a subclass returns an empty instance of the subclass with a comparator returns an empty instance with same comparator Immutable::SortedSet on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self Immutable::SortedSet #delete_at removes the element at the specified index makes no modification if the index is out of range Immutable::SortedSet #delete on an empty set returns an empty set with an existing value preserves the original returns a copy with the remaining of values with a non-existing value preserves the original values returns self when removing the last value in a sorted set maintains the set order when the set is in natural order returns the canonical empty set on [1, 2, 3], when deleting [1, 2, 3] returns [] on [1, 2, 3, 4], when deleting [1, 2, 3] returns [4] on [1, 2, 3, 4], when deleting [1, 2, 4] returns [3] on [1, 2, 3, 4], when deleting [1, 3, 4] returns [2] on [1, 2, 3, 4], when deleting [2, 3, 4] returns [1] on [1, 2, 3, 4, 5], when deleting [1, 2, 3] returns [4, 5] on [1, 2, 3, 4, 5], when deleting [1, 2, 4] returns [3, 5] on [1, 2, 3, 4, 5], when deleting [1, 2, 5] returns [3, 4] on [1, 2, 3, 4, 5], when deleting [1, 3, 4] returns [2, 5] on [1, 2, 3, 4, 5], when deleting [1, 3, 5] returns [2, 4] on [1, 2, 3, 4, 5], when deleting [1, 4, 5] returns [2, 3] on [1, 2, 3, 4, 5], when deleting [2, 3, 4] returns [1, 5] on [1, 2, 3, 4, 5], when deleting [2, 3, 5] returns [1, 4] on [1, 2, 3, 4, 5], when deleting [2, 4, 5] returns [1, 3] on [1, 2, 3, 4, 5], when deleting [3, 4, 5] returns [1, 2] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 3] returns [4, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 4] returns [3, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 5] returns [3, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 2, 6] returns [3, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 4] returns [2, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 5] returns [2, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 3, 6] returns [2, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 4, 5] returns [2, 3, 6] on [1, 2, 3, 4, 5, 6], when deleting [1, 4, 6] returns [2, 3, 5] on [1, 2, 3, 4, 5, 6], when deleting [1, 5, 6] returns [2, 3, 4] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 4] returns [1, 5, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 5] returns [1, 4, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 3, 6] returns [1, 4, 5] on [1, 2, 3, 4, 5, 6], when deleting [2, 4, 5] returns [1, 3, 6] on [1, 2, 3, 4, 5, 6], when deleting [2, 4, 6] returns [1, 3, 5] on [1, 2, 3, 4, 5, 6], when deleting [2, 5, 6] returns [1, 3, 4] on [1, 2, 3, 4, 5, 6], when deleting [3, 4, 5] returns [1, 2, 6] on [1, 2, 3, 4, 5, 6], when deleting [3, 4, 6] returns [1, 2, 5] on [1, 2, 3, 4, 5, 6], when deleting [3, 5, 6] returns [1, 2, 4] on [1, 2, 3, 4, 5, 6], when deleting [4, 5, 6] returns [1, 2, 3] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 3] returns [4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 4] returns [3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 5] returns [3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 6] returns [3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 2, 7] returns [3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 4] returns [2, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 5] returns [2, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 6] returns [2, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 3, 7] returns [2, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 5] returns [2, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 6] returns [2, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 4, 7] returns [2, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 5, 6] returns [2, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 5, 7] returns [2, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [1, 6, 7] returns [2, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 4] returns [1, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 5] returns [1, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 6] returns [1, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 3, 7] returns [1, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 5] returns [1, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 6] returns [1, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 4, 7] returns [1, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 5, 6] returns [1, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 5, 7] returns [1, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [2, 6, 7] returns [1, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 5] returns [1, 2, 6, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 6] returns [1, 2, 5, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 4, 7] returns [1, 2, 5, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 5, 6] returns [1, 2, 4, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 5, 7] returns [1, 2, 4, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [3, 6, 7] returns [1, 2, 4, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 5, 6] returns [1, 2, 3, 7] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 5, 7] returns [1, 2, 3, 6] on [1, 2, 3, 4, 5, 6, 7], when deleting [4, 6, 7] returns [1, 2, 3, 5] on [1, 2, 3, 4, 5, 6, 7], when deleting [5, 6, 7] returns [1, 2, 3, 4] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6] on [1, 2, 3, 4, 5, 6, 7, 8], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 2, 9] returns [3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 3, 9] returns [2, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 4, 9] returns [2, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 5, 9] returns [2, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 6, 9] returns [2, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 7, 9] returns [2, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [1, 8, 9] returns [2, 3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 3, 9] returns [1, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 4, 9] returns [1, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 5, 9] returns [1, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 6, 9] returns [1, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 7, 9] returns [1, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [2, 8, 9] returns [1, 3, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 4, 9] returns [1, 2, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 5, 9] returns [1, 2, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 6, 9] returns [1, 2, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 7, 9] returns [1, 2, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [3, 8, 9] returns [1, 2, 4, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 5, 9] returns [1, 2, 3, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 6, 9] returns [1, 2, 3, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 7, 9] returns [1, 2, 3, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [4, 8, 9] returns [1, 2, 3, 5, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 6, 9] returns [1, 2, 3, 4, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 7, 9] returns [1, 2, 3, 4, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [5, 8, 9] returns [1, 2, 3, 4, 6, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 7, 9] returns [1, 2, 3, 4, 5, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [6, 8, 9] returns [1, 2, 3, 4, 5, 7] on [1, 2, 3, 4, 5, 6, 7, 8, 9], when deleting [7, 8, 9] returns [1, 2, 3, 4, 5, 6] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 3] returns [4, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 4] returns [3, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 5] returns [3, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 6] returns [3, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 7] returns [3, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 8] returns [3, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 9] returns [3, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 2, 10] returns [3, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 4] returns [2, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 5] returns [2, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 6] returns [2, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 7] returns [2, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 8] returns [2, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 9] returns [2, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 3, 10] returns [2, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 5] returns [2, 3, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 6] returns [2, 3, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 7] returns [2, 3, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 8] returns [2, 3, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 9] returns [2, 3, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 4, 10] returns [2, 3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 6] returns [2, 3, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 7] returns [2, 3, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 8] returns [2, 3, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 9] returns [2, 3, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 5, 10] returns [2, 3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 7] returns [2, 3, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 8] returns [2, 3, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 9] returns [2, 3, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 6, 10] returns [2, 3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 8] returns [2, 3, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 9] returns [2, 3, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 7, 10] returns [2, 3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 8, 9] returns [2, 3, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 8, 10] returns [2, 3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [1, 9, 10] returns [2, 3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 4] returns [1, 5, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 5] returns [1, 4, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 6] returns [1, 4, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 7] returns [1, 4, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 8] returns [1, 4, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 9] returns [1, 4, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 3, 10] returns [1, 4, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 5] returns [1, 3, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 6] returns [1, 3, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 7] returns [1, 3, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 8] returns [1, 3, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 9] returns [1, 3, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 4, 10] returns [1, 3, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 6] returns [1, 3, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 7] returns [1, 3, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 8] returns [1, 3, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 9] returns [1, 3, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 5, 10] returns [1, 3, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 7] returns [1, 3, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 8] returns [1, 3, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 9] returns [1, 3, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 6, 10] returns [1, 3, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 8] returns [1, 3, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 9] returns [1, 3, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 7, 10] returns [1, 3, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 8, 9] returns [1, 3, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 8, 10] returns [1, 3, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [2, 9, 10] returns [1, 3, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 5] returns [1, 2, 6, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 6] returns [1, 2, 5, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 7] returns [1, 2, 5, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 8] returns [1, 2, 5, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 9] returns [1, 2, 5, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 4, 10] returns [1, 2, 5, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 6] returns [1, 2, 4, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 7] returns [1, 2, 4, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 8] returns [1, 2, 4, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 9] returns [1, 2, 4, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 5, 10] returns [1, 2, 4, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 7] returns [1, 2, 4, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 8] returns [1, 2, 4, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 9] returns [1, 2, 4, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 6, 10] returns [1, 2, 4, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 8] returns [1, 2, 4, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 9] returns [1, 2, 4, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 7, 10] returns [1, 2, 4, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 8, 9] returns [1, 2, 4, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 8, 10] returns [1, 2, 4, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [3, 9, 10] returns [1, 2, 4, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 6] returns [1, 2, 3, 7, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 7] returns [1, 2, 3, 6, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 8] returns [1, 2, 3, 6, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 9] returns [1, 2, 3, 6, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 5, 10] returns [1, 2, 3, 6, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 7] returns [1, 2, 3, 5, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 8] returns [1, 2, 3, 5, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 9] returns [1, 2, 3, 5, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 6, 10] returns [1, 2, 3, 5, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 8] returns [1, 2, 3, 5, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 9] returns [1, 2, 3, 5, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 7, 10] returns [1, 2, 3, 5, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 8, 9] returns [1, 2, 3, 5, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 8, 10] returns [1, 2, 3, 5, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [4, 9, 10] returns [1, 2, 3, 5, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 7] returns [1, 2, 3, 4, 8, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 8] returns [1, 2, 3, 4, 7, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 9] returns [1, 2, 3, 4, 7, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 6, 10] returns [1, 2, 3, 4, 7, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 8] returns [1, 2, 3, 4, 6, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 9] returns [1, 2, 3, 4, 6, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 7, 10] returns [1, 2, 3, 4, 6, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 8, 9] returns [1, 2, 3, 4, 6, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 8, 10] returns [1, 2, 3, 4, 6, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [5, 9, 10] returns [1, 2, 3, 4, 6, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 8] returns [1, 2, 3, 4, 5, 9, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 9] returns [1, 2, 3, 4, 5, 8, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 7, 10] returns [1, 2, 3, 4, 5, 8, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 8, 9] returns [1, 2, 3, 4, 5, 7, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 8, 10] returns [1, 2, 3, 4, 5, 7, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [6, 9, 10] returns [1, 2, 3, 4, 5, 7, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 8, 9] returns [1, 2, 3, 4, 5, 6, 10] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 8, 10] returns [1, 2, 3, 4, 5, 6, 9] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [7, 9, 10] returns [1, 2, 3, 4, 5, 6, 8] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], when deleting [8, 9, 10] returns [1, 2, 3, 4, 5, 6, 7] #delete? with an existing value preserves the original returns a copy with the remaining values with a non-existing value preserves the original values returns false Immutable::SortedSet #difference for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] #subtract for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] #- for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["A", "C"] returns ["B"] for ["A", "B", "C", "D", "E", "F"] and ["B", "E", "F", "G", "M", "X"] returns ["A", "C", "D"] Immutable::SortedSet #disjoint? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["D", "E"] returns true for ["F", "G", "H", "I"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["D", "E", "F", "G"] and ["A", "B", "C"] returns true Immutable::SortedSet #drop 0 from [] preserves the original returns [] 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns [] 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] 1 from ["A", "B", "C"] preserves the original returns ["B", "C"] 2 from ["A", "B", "C"] preserves the original returns ["C"] 3 from ["A", "B", "C"] preserves the original returns [] when argument is zero returns self when the set has a custom order maintains the custom order keeps the comparator even when set is cleared when called on a subclass should return an instance of the subclass Immutable::SortedSet #drop_while on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator on ["A", "B", "C", "D", "E", "F", "G"] with a block preserves the original returns ["C", "D", "E", "F", "G"] without a block returns an Enumerator Immutable::SortedSet #each with no block returns an Enumerator with a block returns self iterates over the items in order Immutable::SortedSet #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false .empty returns the canonical empty set from a subclass returns an empty instance of the subclass Immutable::SortedSet #eql? when comparing to a standard set returns false when comparing to a arbitrary object returns false when comparing to an Immutable::Set returns false when comparing with a subclass of Immutable::SortedSet returns false with an empty set for each comparison returns true with an empty set and a set with nil returns false with a single item array and empty array returns false with matching single item array returns true with mismatching single item array returns false with a multi-item array and single item array returns false with matching multi-item array returns true with a mismatching multi-item array returns true with the same values, but a different sort order returns false Immutable::SortedSet #exclusion for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["B", "C", "D"] returns ["A", "D"] for ["A", "B", "C"] and ["D", "E", "F"] returns ["A", "B", "C", "D", "E", "F"] #^ for [] and [] returns [] for ["A"] and [] returns ["A"] for ["A"] and ["A"] returns [] for ["A", "B", "C"] and ["B"] returns ["A", "C"] for ["A", "B", "C"] and ["B", "C", "D"] returns ["A", "D"] for ["A", "B", "C"] and ["D", "E", "F"] returns ["A", "B", "C", "D", "E", "F"] Immutable::SortedSet #fetch gives precedence to default block over default argument if passed both with no default provided when the index exists returns the value at the index when the key does not exist raises an IndexError with a default value when the index exists returns the value at the index when the index does not exist returns the default value with a default block when the index exists returns the value at the index when the index does not exist invokes the block with the missing index as parameter Immutable::SortedSet #find_index looking for "A" in [] without block returns nil looking for "A" in [] with block returns nil looking for nil in [] with block returns nil looking for "A" in ["A"] without block returns 0 looking for "A" in ["A"] with block returns 0 looking for "B" in ["A"] without block returns nil looking for "B" in ["A"] with block returns nil looking for nil in ["A"] with block returns nil looking for "A" in ["A", "B", "C"] without block returns 0 looking for "A" in ["A", "B", "C"] with block returns 0 looking for "B" in ["A", "B", "C"] without block returns 1 looking for "B" in ["A", "B", "C"] with block returns 1 looking for "C" in ["A", "B", "C"] without block returns 2 looking for "C" in ["A", "B", "C"] with block returns 2 looking for "D" in ["A", "B", "C"] without block returns nil looking for "D" in ["A", "B", "C"] with block returns nil looking for 1 in 0..1 without block returns 1 looking for 1 in 0..1 with block returns 1 looking for 5 in 0..10 without block returns 5 looking for 5 in 0..10 with block returns 5 looking for 10 in 0..10 without block returns 10 looking for 10 in 0..10 with block returns 10 looking for 2 in [2] without block returns 0 looking for 2 in [2] with block returns 0 looking for 2.0 in [2] without block returns 0 looking for 2.0 in [2] with block returns 0 looking for 2.0 in [2.0] without block returns 0 looking for 2.0 in [2.0] with block returns 0 looking for 2 in [2.0] without block returns 0 looking for 2 in [2.0] with block returns 0 #index looking for "A" in [] without block returns nil looking for "A" in [] with block returns nil looking for nil in [] with block returns nil looking for "A" in ["A"] without block returns 0 looking for "A" in ["A"] with block returns 0 looking for "B" in ["A"] without block returns nil looking for "B" in ["A"] with block returns nil looking for nil in ["A"] with block returns nil looking for "A" in ["A", "B", "C"] without block returns 0 looking for "A" in ["A", "B", "C"] with block returns 0 looking for "B" in ["A", "B", "C"] without block returns 1 looking for "B" in ["A", "B", "C"] with block returns 1 looking for "C" in ["A", "B", "C"] without block returns 2 looking for "C" in ["A", "B", "C"] with block returns 2 looking for "D" in ["A", "B", "C"] without block returns nil looking for "D" in ["A", "B", "C"] with block returns nil looking for 1 in 0..1 without block returns 1 looking for 1 in 0..1 with block returns 1 looking for 5 in 0..10 without block returns 5 looking for 5 in 0..10 with block returns 5 looking for 10 in 0..10 without block returns 10 looking for 10 in 0..10 with block returns 10 looking for 2 in [2] without block returns 0 looking for 2 in [2] with block returns 0 looking for 2.0 in [2] without block returns 0 looking for 2.0 in [2] with block returns 0 looking for 2.0 in [2.0] without block returns 0 looking for 2.0 in [2.0] with block returns 0 looking for 2 in [2.0] without block returns 0 looking for 2 in [2.0] with block returns 0 Immutable::SortedSet #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" on ["Z", "Y", "X"] returns "X" Immutable::SortedSet #from when called without a block returns a sorted set of all items equal to or greater than the argument when called with a block yields all the items equal to or greater than than the argument on an empty set returns an empty set with an argument higher than all the values in the set returns an empty set Immutable::SortedSet #group_by with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass #group with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass #classify with a block on [] preserves the original returns [] on [1] preserves the original returns [{true=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{true=>Immutable::SortedSet[1, 3], false=>Immutable::SortedSet[2, 4]}] without a block on [] preserves the original returns [] on [1] preserves the original returns [{1=>Immutable::SortedSet[1]}] on [1, 2, 3, 4] preserves the original returns [{1=>Immutable::SortedSet[1], 2=>Immutable::SortedSet[2], 3=>Immutable::SortedSet[3], 4=>Immutable::SortedSet[4]}] from a subclass returns an Hash whose values are instances of the subclass Immutable::SortedSet #include? returns true for an existing value (1) returns true for an existing value (2) returns true for an existing value (3) returns true for an existing value (4.0) returns false for a non-existing value uses #<=> for equality #member? returns true for an existing value (1) returns true for an existing value (2) returns true for an existing value (3) returns true for an existing value (4.0) returns false for a non-existing value uses #<=> for equality Immutable::SortedSet #inspect on [] returns "Immutable::SortedSet[]" returns a string which can be eval'd to get an equivalent set on ["A"] returns "Immutable::SortedSet[\"A\"]" returns a string which can be eval'd to get an equivalent set on ["C", "B", "A"] returns "Immutable::SortedSet[\"A\", \"B\", \"C\"]" returns a string which can be eval'd to get an equivalent set from a subclass returns a programmer-readable representation of the set contents returns a string which can be eval'd to get an equivalent set Immutable::SortedSet #intersect? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["D", "E"] returns false for ["F", "G", "H", "I"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["D", "E", "F", "G"] and ["A", "B", "C"] returns false Immutable::SortedSet #intersection for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns [] for [] and ["A"] returns [] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and ["B"] returns ["B"] for ["B"] and ["A", "B", "C"] returns ["B"] for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"] for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"] for ["A", "M", "T", "X"] and ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] returns ["M", "T"] for ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] and ["A", "M", "T", "X"] returns ["M", "T"] #& for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns [] for [] and ["A"] returns [] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and ["B"] returns ["B"] for ["B"] and ["A", "B", "C"] returns ["B"] for ["A", "B", "C"] and ["A", "C"] returns ["A", "C"] for ["A", "C"] and ["A", "B", "C"] returns ["A", "C"] for ["A", "M", "T", "X"] and ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] returns ["M", "T"] for ["B", "C", "D", "E", "F", "G", "H", "I", "M", "P", "Q", "T", "U"] and ["A", "M", "T", "X"] returns ["M", "T"] Immutable::SortedSet #last with an empty set returns the last item with a single item set returns the last item with a multi-item set returns the last item Immutable::SortedSet #map when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values filters out duplicates with no block returns an Enumerator on a set ordered by a comparator returns a new set with the mapped values filters out duplicates #collect when empty returns self when not empty with a block preserves the original values returns a new set with the mapped values filters out duplicates with no block returns an Enumerator on a set ordered by a comparator returns a new set with the mapped values filters out duplicates Immutable::SortedSet #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by index after loading raises a TypeError if set has a custom sort order Immutable::SortedSet #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::SortedSet #min on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" on [1, 2, 3, 4, 5] returns 1 on [0, -0.0, 2.2, -4, -4.2] returns -4.2 Immutable::SortedSet .new accepts a single enumerable argument and creates a new sorted set also works with a Range doesn't mutate the initializer doesn't change if the initializer is later mutated is amenable to overriding of #initialize accepts a block with arity 1 accepts a block with arity 2 can use a block produced by Symbol#to_proc filters out duplicates when passed a comparator with arity 2 still filters out duplicates still doesn't mutate the initializer still doesn't change if the initializer is later mutated when passed a block with arity 1 still filters out duplicates still doesn't mutate the initializer still doesn't change if the initializer is later mutated from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new sorted set filters out duplicate items Immutable::SortedSet #reverse_each with no block returns an Enumerator with a block returns self iterates over the items in order Immutable::SortedSet #sample returns a randomly chosen item Immutable::SortedSet #select when everything matches preserves the original returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class #find_all when everything matches preserves the original returns self when only some things match with a block preserves the original returns a set with the matching values with no block returns an Enumerator when nothing matches preserves the original returns the canonical empty set from a subclass returns an instance of the same class Immutable::SortedSet #size returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] #length returns 0 for [] returns 1 for ["A"] returns 3 for ["A", "B", "C"] Immutable::SortedSet #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the sorted_set when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed an empty Range does not lose custom sort order when passed a length of zero does not lose custom sort order when passed a subclass of Range works the same as with a Range on a subclass of SortedSet with index and count or a range, returns an instance of the subclass #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the sorted_set when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed an empty Range does not lose custom sort order when passed a length of zero does not lose custom sort order when passed a subclass of Range works the same as with a Range on a subclass of SortedSet with index and count or a range, returns an instance of the subclass Immutable::SortedSet #sort on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] #sort_by on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] sort on a SortedSet with custom sort order returns a SortedSet with the natural sort order Immutable::SortedSet #subset? for [] and [] returns true for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false #proper_subset? for [] and [] returns false for ["A"] and [] returns false for [] and ["A"] returns true for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns false for ["B"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "C"] returns false for ["A", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns true for ["A", "B", "C", "D"] and ["A", "B", "C"] returns false Immutable::SortedSet #superset? for [] and [] returns true for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns true for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns true for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true #proper_superset? for [] and [] returns false for ["A"] and [] returns true for [] and ["A"] returns false for ["A"] and ["A"] returns false for ["A", "B", "C"] and ["B"] returns true for ["B"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "C"] returns true for ["A", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C"] returns false for ["A", "B", "C"] and ["A", "B", "C", "D"] returns false for ["A", "B", "C", "D"] and ["A", "B", "C"] returns true Immutable::SortedSet #take 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] when argument is at least size of receiver returns self when the set has a custom order maintains the custom order keeps the comparator even when set is cleared when called on a subclass should return an instance of the subclass Immutable::SortedSet #take_while on [] with a block returns [] preserves the original without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original without a block returns an Enumerator Immutable::SortedSet #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values Immutable::SortedSet #union for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #| for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #+ for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] #merge for [] and [] returns [] for [] and [] returns [] for ["A"] and [] returns ["A"] for [] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A"] and ["A"] returns ["A"] for ["A", "B", "C"] and [] returns ["A", "B", "C"] for [] and ["A", "B", "C"] returns ["A", "B", "C"] for ["A", "C", "E", "G", "X"] and ["B", "C", "D", "E", "H", "M"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] for ["B", "C", "D", "E", "H", "M"] and ["A", "C", "E", "G", "X"] returns ["A", "B", "C", "D", "E", "G", "H", "M", "X"] union filters out duplicates when passed an Array doesn't mutate an Array which is passed in on a set ordered by a comparator still filters out duplicates when passed an Array still doesn't mutate an Array which is passed in Immutable::SortedSet #up_to when called without a block returns a sorted set of all items equal to or less than the argument when called with a block yields all the items equal to or less than than the argument on an empty set returns an empty set with an argument less than all the values in the set returns an empty set Immutable::SortedSet .uniq_by_comparator! can handle empty arrays can handle arrays with 1 element can handle arrays with 2 elements and no dupes can handle arrays with 2 elements and dupes can handle arrays with lots of elements works with funny comparators Immutable::SortedSet #values_at accepts any number of indices, and returns a sorted_set of items at those indices when passed invalid indices filters them out when passed no arguments returns an empty sorted_set from a subclass returns an instance of the subclass Immutable::Vector #add with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass #<< with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass #push with a empty vector adding a single item preserves the original adds the item to the vector with a single-item vector adding a different item preserves the original adds the item to the vector with a single-item vector adding a duplicate item preserves the original adds the item to the vector with a 31-item vector adding a different item preserves the original adds the item to the vector with a 32-item vector adding a different item preserves the original adds the item to the vector with a 33-item vector adding a different item preserves the original adds the item to the vector with a 1023-item vector adding a different item preserves the original adds the item to the vector with a 1024-item vector adding a different item preserves the original adds the item to the vector with a 1025-item vector adding a different item preserves the original adds the item to the vector from a subclass returns an instance of the subclass Immutable::Vector #any? when created with no values with a block returns false with a block returns false when created with values with a block that returns true returns true with a block that doesn't return true returns false without a block with some values that are truthy returns true with all values that are falsey returns false Immutable::Vector #assoc searches for a 2-element array with a given 1st item returns nil if a matching 1st item is not found uses #== to compare 1st items with provided object skips elements which are not indexable #rassoc searches for a 2-element array with a given 2nd item returns nil if a matching 2nd item is not found uses #== to compare 2nd items with provided object skips elements which are not indexable Immutable::Vector #bsearch with a block which returns false for elements below desired position, and true for those at/above returns the first element for which the predicate is true if the block always returns false returns nil if the block always returns true returns the first element with a block which returns a negative number for elements below desired position, zero for the right element, and positive for those above returns the element for which the block returns zero if the block always returns positive returns nil if the block always returns negative returns nil if the block returns sometimes positive, sometimes negative, but never zero returns nil if not passed a block returns an Enumerator on an empty vector returns nil Immutable::Vector #clear on [] preserves the original returns an empty vector from a subclass returns an instance of the subclass on ["A"] preserves the original returns an empty vector from a subclass returns an instance of the subclass on ["A", "B", "C"] preserves the original returns an empty vector from a subclass returns an instance of the subclass Immutable::Vector #combination works on many combinations of input leaves the original unmodified with a block returns self with no block returns an Enumerator when passed an argument which is out of bounds yields nothing and returns self when passed an argument zero yields an empty array when passed an argument equal to the vector's length yields self as an array when passed an argument 1 yields each item in the vector, as single-item vectors when passed another integral argument yields all combinations of the given length on an empty vector works the same Immutable::Vector #compact returns a new Vector with all nils removed doesn't remove false on an empty vector returns self from a subclass returns an instance of the subclass Immutable::Vector #<=> with [] and [1] returns -1 with [1] and [] returns 1 with [] and [] returns 0 with [1] and [2] returns -1 with [2] and [1] returns 1 with [1] and [1] returns 0 with [1] and [1, 2] returns -1 with [1, 2] and [1] returns 1 with [1] and [1] returns 0 with [2, 3, 4] and [3, 4, 5] returns -1 with [3, 4, 5] and [2, 3, 4] returns 1 with [2, 3, 4] and [2, 3, 4] returns 0 with [[0]] and [[1]] returns -1 with [[1]] and [[0]] returns 1 with [[0]] and [[0]] returns 0 Immutable::Vector #+ preserves the original appends the elements in the other enumerable on a 1-item vector works the same on a 31-item vector works the same on a 32-item vector works the same on a 33-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same #concat preserves the original appends the elements in the other enumerable on a 1-item vector works the same on a 31-item vector works the same on a 32-item vector works the same on a 33-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same Immutable::Vector on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self on [] returns self on ["A"] returns self on ["A", "B", "C"] returns self on 1..32 returns self Immutable::Vector #count returns the number of elements returns the number of elements that equal the argument returns the number of element for which the block evaluates to true Immutable::Vector #delete_at removes the element at the specified index makes no modification if the index is out of range works when deleting last item at boundary where vector trie needs to get shallower works on an empty vector works on a vector with 1 item works on a vector with 32 items has the right size and contents after many deletions Immutable::Vector #delete removes elements that are #== to the argument on an empty vector returns self on a subclass of Vector returns an instance of the subclass Immutable::Vector #dig returns value at the index with one argument returns value at index in nested arrays raises an error when indexing deeper than possible returns nil if you index past the end of an array raises an error when indexing with a key vectors don't understand Immutable::Vector #drop raises an ArgumentError if number of elements specified is negative 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns [] 1 from ["A"] preserves the original returns [] 0 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns ["A", "B", "C"] 2 from ["A", "B", "C"] preserves the original returns ["C"] 3 from 1..32 preserves the original returns 4..32 32 from 1..33 preserves the original returns [33] when number of elements specified is zero returns self Immutable::Vector #drop_while returns an empty vector if block is always true stops dropping items if block returns nil stops dropping items if block returns false on [] with a block preserves the original returns [] without a block returns an Enumerator on ["A"] with a block preserves the original returns [] without a block returns an Enumerator on ["A", "B", "C"] with a block preserves the original returns ["C"] without a block returns an Enumerator on an empty vector returns an empty vector Immutable::Vector #each_index with a block yields all the valid indices into the vector returns self without a block returns an Enumerator on an empty vector doesn't yield anything on a 1-item vector yields all valid indices on a 2-item vector yields all valid indices on a 10-item vector yields all valid indices on a 31-item vector yields all valid indices on a 32-item vector yields all valid indices on a 33-item vector yields all valid indices on a 1000-item vector yields all valid indices on a 1024-item vector yields all valid indices on a 1025-item vector yields all valid indices Immutable::Vector #each with no block returns an Enumerator on a 31-item vector with a block returns self yields all the items iterates over the items in order on a 32-item vector with a block returns self yields all the items iterates over the items in order on a 33-item vector with a block returns self yields all the items iterates over the items in order on a 1023-item vector with a block returns self yields all the items iterates over the items in order on a 1024-item vector with a block returns self yields all the items iterates over the items in order on a 1025-item vector with a block returns self yields all the items iterates over the items in order on an empty vector doesn't yield anything Immutable::Vector #each_with_index with no block returns an Enumerator on a 1-item vector with a block returns self iterates over the items in order on a 2-item vector with a block returns self iterates over the items in order on a 31-item vector with a block returns self iterates over the items in order on a 32-item vector with a block returns self iterates over the items in order on a 33-item vector with a block returns self iterates over the items in order on a 1023-item vector with a block returns self iterates over the items in order on a 1024-item vector with a block returns self iterates over the items in order on a 1025-item vector with a block returns self iterates over the items in order on an empty vector doesn't yield anything Immutable::Vector #empty? on [] returns true on ["A"] returns false on ["A", "B", "C"] returns false .empty returns the canonical empty vector from a subclass returns an empty instance of the subclass calls overridden #initialize when creating empty Hash Immutable::Vector #eql returns false when comparing with an array with the same contents returns false when comparing with an arbitrary object returns false when comparing an empty vector with an empty array returns false when comparing with a subclass of Immutable::Vector #== returns true when comparing with an array with the same contents returns false when comparing with an arbitrary object returns true when comparing an empty vector with an empty array returns true when comparing with a subclass of Immutable::Vector works on larger vectors #eql? returns true for vectors [] and [] for vectors [] and [] returns false for vectors [] and [nil] for vectors [nil] and [] returns false for vectors ["A"] and [] for vectors [] and ["A"] returns true for vectors ["A"] and ["A"] for vectors ["A"] and ["A"] returns false for vectors ["A"] and ["B"] for vectors ["B"] and ["A"] returns false for vectors ["A", "B"] and ["A"] for vectors ["A"] and ["A", "B"] returns true for vectors ["A", "B", "C"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["A", "B", "C"] returns false for vectors ["C", "A", "B"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["C", "A", "B"] #== returns true for vectors [] and [] for vectors [] and [] returns false for vectors [] and [nil] for vectors [nil] and [] returns false for vectors ["A"] and [] for vectors [] and ["A"] returns true for vectors ["A"] and ["A"] for vectors ["A"] and ["A"] returns false for vectors ["A"] and ["B"] for vectors ["B"] and ["A"] returns false for vectors ["A", "B"] and ["A"] for vectors ["A"] and ["A", "B"] returns true for vectors ["A", "B", "C"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["A", "B", "C"] returns false for vectors ["C", "A", "B"] and ["A", "B", "C"] for vectors ["A", "B", "C"] and ["C", "A", "B"] Immutable::Vector #fetch gives precedence to default block over default argument if passed both with no default provided when the index exists returns the value at the index when the key does not exist raises an IndexError with a default value when the index exists returns the value at the index when the index does not exist returns the default value with a default block when the index exists returns the value at the index when the index does not exist invokes the block with the missing index as parameter Immutable::Vector #fill can replace a range of items at the beginning of a vector can replace a range of items in the middle of a vector can replace a range of items at the end of a vector can replace all the items in a vector can fill past the end of the vector behaves like Array#fill, on a variety of inputs with 1 argument replaces all the items in the vector by default with 2 arguments replaces up to the end of the vector by default when index and length are 0 leaves the vector unmodified when expanding a vector past boundary where vector trie needs to deepen works the same on a 1000-item vector works the same on a 1023-item vector works the same on a 1024-item vector works the same on a 1025-item vector works the same on a 2000-item vector works the same Immutable::Vector #first on [] returns nil on ["A"] returns "A" on ["A", "B", "C"] returns "A" on 1..32 returns 1 Immutable::Vector #flat_map with an empty vector returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a block that returns an empty vector returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a vector of one item returns the flattened values as an Immutable::Vector returns an Immutable::Vector with a vector of multiple items returns the flattened values as an Immutable::Vector returns an Immutable::Vector Immutable::Vector #flatten recursively flattens nested vectors into containing vector flattens nested arrays as well leaves the original unmodified with an integral argument only flattens down to the specified depth with an argument of zero returns self on a subclass returns an instance of the subclass on a vector with no nested vectors returns an unchanged vector on a Vector larger than 32 items initialized with Vector.new returns an unchanged vector Immutable::Vector #get when empty always returns nil when not empty with a positive index within the absolute bounds of the vector returns the value at the specified index from the head outside the absolute bounds of the vector returns nil with a negative index within the absolute bounds of the vector returns the value at the specified index from the tail outside the absolute bounds of the vector returns nil on a 1-item vector works correctly, even after various addings and removings on a 10-item vector works correctly, even after various addings and removings on a 31-item vector works correctly, even after various addings and removings on a 32-item vector works correctly, even after various addings and removings on a 33-item vector works correctly, even after various addings and removings on a 1024-item vector works correctly, even after various addings and removings on a 1025-item vector works correctly, even after various addings and removings on a 2000-item vector works correctly, even after various addings and removings #at when empty always returns nil when not empty with a positive index within the absolute bounds of the vector returns the value at the specified index from the head outside the absolute bounds of the vector returns nil with a negative index within the absolute bounds of the vector returns the value at the specified index from the tail outside the absolute bounds of the vector returns nil on a 1-item vector works correctly, even after various addings and removings on a 10-item vector works correctly, even after various addings and removings on a 31-item vector works correctly, even after various addings and removings on a 32-item vector works correctly, even after various addings and removings on a 33-item vector works correctly, even after various addings and removings on a 1024-item vector works correctly, even after various addings and removings on a 1025-item vector works correctly, even after various addings and removings on a 2000-item vector works correctly, even after various addings and removings Immutable::Vector #group_by returns a hash without default proc with a block on [] returns [] on [1] returns [{true=>Immutable::Vector[1]}] on [1, 2, 3, 4] returns [{true=>Immutable::Vector[1, 3], false=>Immutable::Vector[2, 4]}] without a block on [] returns [] on [1] returns [{1=>Immutable::Vector[1]}] on [1, 2, 3, 4] returns [{1=>Immutable::Vector[1], 2=>Immutable::Vector[2], 3=>Immutable::Vector[3], 4=>Immutable::Vector[4]}] on an empty vector returns an empty hash from a subclass returns an Hash whose values are instances of the subclass Immutable::Vector #include? on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on ["A", "B", false] returns true on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true #member? on [] returns false on [] returns false on ["A"] returns true on ["A"] returns false on ["A"] returns false on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns true on ["A", "B", nil] returns false on ["A", "B", false] returns true on [2] returns true on [2] returns true on [2.0] returns true on [2.0] returns true Immutable::Vector #insert can add items at the beginning of a vector can add items in the middle of a vector can add items at the end of a vector can add items past the end of a vector accepts a negative index, which counts back from the end of the vector raises IndexError if a negative index is too great works when adding an item past boundary when vector trie needs to deepen works when adding to an empty Vector has the right size and contents after many insertions Immutable::Vector #inspect with an empty array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector with a single item array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector with a multi-item array returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector from a subclass returns its contents as a programmer-readable string returns a string which can be eval'd to get back an equivalent vector Immutable::Vector #join with a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "A|B|C" without a separator on [] preserves the original returns "" on ["A"] preserves the original returns "A" on ["A", "B", "C"] preserves the original returns "ABC" without a separator (with global default separator set) on ["A", "B", "C"] returns "A**B**C" Immutable::Vector #last with an empty vector returns the last item with a single item vector returns the last item with a multi-item vector returns the last item with a 31-item vector returns the last item with a 32-item vector returns the last item with a 33-item vector returns the last item with a 1023-item vector returns the last item with a 1024-item vector returns the last item with a 1025-item vector returns the last item Immutable::Vector #length with an empty vector returns the values with a single item vector returns the values with a multi-item vector returns the values with a 31-item vector returns the values with a 32-item vector returns the values with a 33-item vector returns the values with a 1023-item vector returns the values with a 1024-item vector returns the values with a 1025-item vector returns the values Immutable::Vector #<< with a empty array adding a single item preserves the original ltlts the item to the vector with a single-item array adding a different item preserves the original ltlts the item to the vector with a single-item array adding a duplicate item preserves the original ltlts the item to the vector with a 31-item vector adding a different item preserves the original ltlts the item to the vector with a 32-item vector adding a different item preserves the original ltlts the item to the vector with a 33-item vector adding a different item preserves the original ltlts the item to the vector with a 1023-item vector adding a different item preserves the original ltlts the item to the vector with a 1024-item vector adding a different item preserves the original ltlts the item to the vector with a 1025-item vector adding a different item preserves the original ltlts the item to the vector from a subclass returns an instance of the subclass Immutable::Vector #map when empty returns self when not empty with a block preserves the original values returns a new vector with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass on a large vector works #collect when empty returns self when not empty with a block preserves the original values returns a new vector with the mapped values with no block returns an Enumerator from a subclass returns an instance of the subclass on a large vector works Immutable::Vector #marshal_dump/#marshal_load can survive dumping and loading into a new process is still possible to find items by index after loading Immutable::Vector #max with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "San" Immutable::Vector #min with a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ni" without a block on [] returns nil on ["A"] returns "A" on ["Ichi", "Ni", "San"] returns "Ichi" Immutable::Vector #* raises a TypeError if passed nil raises an ArgumentError if passed no arguments with a String argument acts just like #join with an Integer argument concatenates n copies of the array raises an ArgumentError if integer is negative works on large vectors with a subclass of Vector returns an instance of the subclass Immutable::Vector .new accepts a single enumerable argument and creates a new vector makes a defensive copy of a non-frozen mutable Array passed in is amenable to overriding of #initialize from a subclass returns a frozen instance of the subclass .[] accepts a variable number of items and creates a new vector Immutable::Vector #partition on [] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [1, 2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [2, 3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [3, 4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator on [4] with a block preserves the original returns a frozen array with two items correctly identifies the matches correctly identifies the remainder without a block returns an Enumerator Immutable::Vector #permutation handles duplicate elements correctly leaves the original unmodified behaves like Array#permutation without a block or arguments returns an Enumerator of all permutations without a block, but with integral argument returns an Enumerator of all permutations of given length with a block returns self and no argument yields all permutations and an integral argument yields all permutations of the given length on an empty vector yields the empty permutation with an argument of zero yields the empty permutation with a length greater than the size of the vector yields no permutations Immutable::Vector #pop on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["A", "B"] on 1..32 preserves the original returns 1..31 on 1..33 preserves the original returns 1..32 Immutable::Vector #product when passed no arguments multiplies all items in vector when passed one or more vectors when passed a block yields an array for each combination of items from the vectors returns self when not passed a block returns the cartesian product in an array when one of the arguments is empty returns an empty array when the receiver is empty returns an empty array when passed one or more Arrays also calculates the cartesian product correctly Immutable::Vector #reduce on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with #inject on [] with an initial value of 10 and a block returns 10 on [1] with an initial value of 10 and a block returns 9 on [1, 2, 3] with an initial value of 10 and a block returns 4 on [] with no initial value and a block returns nil on [1] with no initial value and a block returns 1 on [1, 2, 3] with no initial value and a block returns -4 with no block and a symbol argument uses the symbol as the name of a method to reduce with with no block and a string argument uses the string as the name of a method to reduce with Immutable::Vector #reject works with a variety of inputs on [] with a block returns [] without a block returns an Enumerator on ["A"] with a block returns ["A"] without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] without a block returns an Enumerator #delete_if works with a variety of inputs on [] with a block returns [] without a block returns an Enumerator on ["A"] with a block returns ["A"] without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B", "C"] without a block returns an Enumerator on ["A", "b", "C"] with a block returns ["A", "C"] without a block returns an Enumerator on ["a", "b", "c"] with a block returns [] without a block returns an Enumerator Immutable::Vector #repeated_combination leaves the original unmodified behaves like Array#repeated_combination with no block returns an Enumerator with a block returns self with a negative argument yields nothing and returns self with a zero argument yields an empty array with a argument of 1 yields each item in the vector, as single-item vectors on an empty vector, with an argument greater than zero yields nothing with a positive argument, greater than 1 yields all combinations of the given size (where a single element can appear more than once in a row) Immutable::Vector #repeated_permutation handles duplicate elements correctly allows permutations larger than the number of elements leaves the original unmodified behaves like Array#repeated_permutation without a block and without argument returns an Enumerator of all repeated permutations with an integral argument returns an Enumerator of all repeated permutations of the given length with a block returns self on an empty vector yields the empty permutation with an argument of zero yields the empty permutation with no argument yields all repeated permutations with a positive integral argument yields all repeated permutations of the given length Immutable::Vector #reverse_each on a 2-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 31-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 32-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 33-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1000-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1024-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 1025-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator on a 2000-item vector with a block (internal iteration) returns self yields all items in the opposite order as #each with no block returns an Enumerator Immutable::Vector #reverse on [] returns [] on [1] returns [1] on [1, 2] returns [2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] returns [32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33] returns [33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100] returns [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] on [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024] returns [1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1014, 1013, 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, 979, 978, 977, 976, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905, 904, 903, 902, 901, 900, 899, 898, 897, 896, 895, 894, 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 879, 878, 877, 876, 875, 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, 857, 856, 855, 854, 853, 852, 851, 850, 849, 848, 847, 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, 833, 832, 831, 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] Immutable::Vector #rindex when passed an object present in the vector returns the last index where the object is present when passed an object not present in the vector returns nil with a block returns the last index of an object which the predicate is true for without an argument OR block returns an Enumerator Immutable::Vector #rotate leaves the original unmodified when passed no argument returns a new vector with the first element moved to the end with an integral argument n returns a new vector with the first (n % size) elements moved to the end with a floating-point argument n coerces the argument to integer using to_int with a non-numeric argument raises a TypeError with an argument of zero returns self with an argument equal to the vector's size returns self on a 31-item vector behaves like Array#rotate on a 32-item vector behaves like Array#rotate on a 33-item vector behaves like Array#rotate on a 1000-item vector behaves like Array#rotate on a 1023-item vector behaves like Array#rotate on a 1024-item vector behaves like Array#rotate on a 1025-item vector behaves like Array#rotate from a subclass returns an instance of the subclass Immutable::Vector #sample returns a randomly chosen item Immutable::Vector #select works with a variety of inputs with a block preserves the original returns a vector with the matching values with no block returns an Enumerator when nothing matches preserves the original returns an empty vector on an empty vector returns self from a subclass returns an instance of the subclass #find_all works with a variety of inputs with a block preserves the original returns a vector with the matching values with no block returns an Enumerator when nothing matches preserves the original returns an empty vector on an empty vector returns self from a subclass returns an instance of the subclass Immutable::Vector #set when empty WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:11:in `block (4 levels) in '. raises an error for index -1 allows indexes 0 and 1 to be set when not empty with a block and a positive index within the absolute bounds of the vector passes the current value to the block replaces the value with the result of the block supports to_proc methods just past the end of the vector passes nil to the block and adds a new value further outside the bounds of the vector passes nil to the block, fills up missing nils, and adds a new value and a negative index within the absolute bounds of the vector passes the current value to the block replaces the value with the result of the block supports to_proc methods outside the absolute bounds of the vector WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:75:in `block (7 levels) in '. raises an error with a value and a positive index within the absolute bounds of the vector preserves the original sets the new value at the specified index just past the end of the vector adds a new value outside the absolute bounds of the vector fills up with nils with a negative index preserves the original sets the new value at the specified index outside the absolute bounds of the vector WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-immutable-ruby-0.1.0/spec/lib/immutable/vector/set_spec.rb:125:in `block (6 levels) in '. raises an error from a subclass returns an instance of the subclass on a 10-item vector works correctly on a 31-item vector works correctly on a 32-item vector works correctly on a 33-item vector works correctly on a 1000-item vector works correctly on a 1023-item vector works correctly on a 1024-item vector works correctly on a 1025-item vector works correctly on a 2000-item vector works correctly with an identical value to an existing item on a 1-item vector returns self on a 2-item vector returns self on a 5-item vector returns self on a 31-item vector returns self on a 32-item vector returns self on a 33-item vector returns self on a 100-item vector returns self on a 200-item vector returns self Immutable::Vector #shift on [] preserves the original returns [] on ["A"] preserves the original returns [] on ["A", "B", "C"] preserves the original returns ["B", "C"] on 1..31 preserves the original returns 2..31 on 1..32 preserves the original returns 2..32 on 1..33 preserves the original returns 2..33 Immutable::Vector #shuffle returns the same values, in a usually different order leaves the original unchanged from a subclass returns an instance of the subclass on a 32-item vector works correctly on a 33-item vector works correctly on a 1023-item vector works correctly on a 1024-item vector works correctly on a 1025-item vector works correctly Immutable::Vector #slice when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the vector when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range on a subclass of Vector with index and count or a range, returns an instance of the subclass #[] when passed a positive integral index returns the element at that index leaves the original unchanged when passed a negative integral index returns the element which is number (index.abs) counting from the end of the vector when passed a positive integral index and count returns 'count' elements starting from 'index' leaves the original unchanged when passed a negative integral index and count returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array when passed a Range returns the elements whose indexes are within the given Range leaves the original unchanged when passed a subclass of Range works the same as with a Range on a subclass of Vector with index and count or a range, returns an instance of the subclass Immutable::Vector #sort on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] on a 10-item vector behaves like Arraysort on a 31-item vector behaves like Arraysort on a 32-item vector behaves like Arraysort on a 33-item vector behaves like Arraysort on a 1023-item vector behaves like Arraysort on a 1024-item vector behaves like Arraysort on a 1025-item vector behaves like Arraysort #sort_by on [] with a block preserves the original returns [] without a block preserves the original returns [] on ["A"] with a block preserves the original returns ["A"] without a block preserves the original returns ["A"] on ["Ichi", "Ni", "San"] with a block preserves the original returns ["Ni", "San", "Ichi"] without a block preserves the original returns ["Ichi", "Ni", "San"] on a 10-item vector behaves like Arraysort_by on a 31-item vector behaves like Arraysort_by on a 32-item vector behaves like Arraysort_by on a 33-item vector behaves like Arraysort_by on a 1023-item vector behaves like Arraysort_by on a 1024-item vector behaves like Arraysort_by on a 1025-item vector behaves like Arraysort_by Immutable::Vector #sum on [] returns 0 on [2] returns 2 on [1, 3, 5, 7, 11] returns 27 Immutable::Vector #take 10 from [] preserves the original returns [] 10 from ["A"] preserves the original returns ["A"] 0 from ["A", "B", "C"] preserves the original returns [] 2 from ["A", "B", "C"] preserves the original returns ["A", "B"] 1 from 1..32 preserves the original returns [1] 32 from 1..33 preserves the original returns 1..32 40 from 1..100 preserves the original returns 1..40 when number of elements specified is identical to size returns self when number of elements specified is bigger than size returns self Immutable::Vector #take_while on [] with a block returns [] preserves the original without a block returns an Enumerator on ["A"] with a block returns ["A"] preserves the original without a block returns an Enumerator on ["A", "B", "C"] with a block returns ["A", "B"] preserves the original without a block returns an Enumerator Immutable::Vector #to_a with an empty vector returns the values with an single item vector returns the values with an multi-item vector returns the values with a 10-item vector returns the values with a 31-item vector returns the values with a 32-item vector returns the values with a 33-item vector returns the values with a 1000-item vector returns the values with a 1023-item vector returns the values with a 1024-item vector returns the values with a 1025-item vector returns the values Immutable::Vector #to_ary converts using block parameters converts using method arguments converts using splat Immutable::Vector #to_list on [] returns a list the returned list has the correct length contains all values on ["A"] returns a list the returned list has the correct length contains all values on ["A", "B", "C"] returns a list the returned list has the correct length contains all values Immutable::Vector #to_set on [] returns a set with the same values on ["A"] returns a set with the same values on ["A", "B", "C"] returns a set with the same values on 1..10 returns a set with the same values on 1..32 returns a set with the same values on 1..33 returns a set with the same values on 1..1000 returns a set with the same values Immutable::Vector #transpose takes a vector of vectors and transposes rows and columns raises an IndexError if the vectors are not of the same length also works on Vectors of Arrays on 10-item vectors behaves like Array#transpose on 31-item vectors behaves like Array#transpose on 32-item vectors behaves like Array#transpose on 33-item vectors behaves like Array#transpose on 1000-item vectors behaves like Array#transpose on 1023-item vectors behaves like Array#transpose on 1024-item vectors behaves like Array#transpose on 1025-item vectors behaves like Array#transpose on 2000-item vectors behaves like Array#transpose on a subclass of Vector returns instances of the subclass if an item does not respond to #size and #[] raises TypeError Immutable::Vector #uniq returns a vector with no duplicates leaves the original unmodified uses #eql? semantics also uses #hash when determining which values are duplicates keeps the first of each group of duplicate values when passed a block uses the return value of the block to determine which items are duplicate on a vector with no duplicates returns an unchanged vector if the vector has more than 32 elements and is initialized with Vector.new returns an unchanged vector on a 10-item vector behaves like Array#uniq on a 31-item vector behaves like Array#uniq on a 32-item vector behaves like Array#uniq on a 33-item vector behaves like Array#uniq on a 1000-item vector behaves like Array#uniq on a 1023-item vector behaves like Array#uniq on a 1024-item vector behaves like Array#uniq on a 1025-item vector behaves like Array#uniq on a 2000-item vector behaves like Array#uniq from a subclass returns an instance of the subclass Immutable::Vector #unshift on [] with "A" preserves the original returns ["A"] on ["A"] with "B" preserves the original returns ["B", "A"] on ["A"] with "A" preserves the original returns ["A", "A"] on ["A", "B", "C"] with "D" preserves the original returns ["D", "A", "B", "C"] on 1..31 with 0 preserves the original returns 0..31 on 1..32 with 0 preserves the original returns 0..32 on 1..33 with 0 preserves the original returns 0..33 Immutable::Vector #update_in with one level on existing key passes the value to the block replaces the value with the result of the block should preserve the original with multi-level vectors on existing keys passes the value to the block replaces the value with the result of the block should preserve the original with multi-level creating sub-hashes when keys don't exist passes nil to the block creates subhashes on the way to set the value with multi-level including hash with existing keys passes the value to the block replaces the value with the result of the block should preserve the original with empty key_path raises ArguemntError Immutable::Vector #values_at accepts any number of indices, and returns a vector of items at those indices when passed invalid indices fills in with nils when passed no arguments returns an empty vector from a subclass returns an instance of the subclass Immutable::Vector #zip with a block yields arrays of one corresponding element from each input sequence fills in the missing values with nils returns nil can handle multiple inputs, of different classes without a block returns a vector of arrays (one corresponding element from each input sequence) on 10-item vectors behaves like Array#zip on 31-item vectors behaves like Array#zip on 32-item vectors behaves like Array#zip on 33-item vectors behaves like Array#zip on 1000-item vectors behaves like Array#zip on 1023-item vectors behaves like Array#zip on 1024-item vectors behaves like Array#zip on 1025-item vectors behaves like Array#zip from a subclass returns an instance of the subclass Immutable Hash can be loaded separately Set can be loaded separately Vector can be loaded separately List can be loaded separately SortedSet can be loaded separately Deque can be loaded separately Top 10 slowest examples (5.61 seconds, 31.6% of total time): Immutable::List#each_chunk on a really big list doesn't run out of stack 1.09 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List#each_slice on a really big list doesn't run out of stack 0.81733 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List ensures each node of a lazy list will only be realized on ONE thread, even when accessed by multiple threads 0.69312 seconds ./spec/lib/immutable/list/multithreading_spec.rb:5 Immutable::List#partition calls the passed block only once for each item, even with multiple threads 0.51227 seconds ./spec/lib/immutable/list/partition_spec.rb:38 Immutable::Hash#select works on a large hash, with many combinations of input 0.50142 seconds ./spec/lib/immutable/hash/select_spec.rb:43 Immutable::List#hash on a really big list doesn't run out of stack 0.46343 seconds ./spec/lib/immutable/list/hash_spec.rb:6 Immutable::Set#find_all works on a large set, with many combinations of input 0.42719 seconds ./spec/lib/immutable/set/select_spec.rb:59 Immutable::Set#select works on a large set, with many combinations of input 0.40807 seconds ./spec/lib/immutable/set/select_spec.rb:59 Immutable::List#eql? on a really big list doesn't run out of stack 0.35064 seconds ./spec/lib/immutable/list/eql_spec.rb:6 Immutable::List#all? on a really big list doesn't run out of stack 0.34489 seconds ./spec/lib/immutable/list/all_spec.rb:8 Top 10 slowest example groups: Immutable::Deque 0.28135 seconds average (0.56269 seconds / 2 examples) ./spec/lib/immutable/deque/marshal_spec.rb:3 Immutable::List 0.27404 seconds average (0.82211 seconds / 3 examples) ./spec/lib/immutable/list/multithreading_spec.rb:4 Immutable::Hash 0.2681 seconds average (0.53621 seconds / 2 examples) ./spec/lib/immutable/hash/marshal_spec.rb:3 Immutable::Set 0.26343 seconds average (0.52687 seconds / 2 examples) ./spec/lib/immutable/set/marshal_spec.rb:3 Immutable::Vector 0.25538 seconds average (0.51076 seconds / 2 examples) ./spec/lib/immutable/vector/marshal_spec.rb:3 Immutable 0.18195 seconds average (1.09 seconds / 6 examples) ./spec/lib/load_spec.rb:6 Immutable::SortedSet 0.17516 seconds average (0.52547 seconds / 3 examples) ./spec/lib/immutable/sorted_set/marshal_spec.rb:3 Immutable::List 0.15813 seconds average (0.47438 seconds / 3 examples) ./spec/lib/immutable/list/hash_spec.rb:3 Immutable::Hash 0.08253 seconds average (0.82529 seconds / 10 examples) ./spec/lib/immutable/hash/size_spec.rb:3 Immutable::Hash 0.06847 seconds average (0.34233 seconds / 5 examples) ./spec/lib/immutable/hash/except_spec.rb:3 Finished in 17.74 seconds (files took 2.62 seconds to load) 4608 examples, 0 failures ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ └──────────────────────────────────────────────────────────────────────────────┘ dh_installdocs -O--buildsystem=ruby dh_ruby_fixdocs -O--buildsystem=ruby dh_installchangelogs -O--buildsystem=ruby dh_installsystemduser -O--buildsystem=ruby dh_perl -O--buildsystem=ruby dh_link -O--buildsystem=ruby dh_strip_nondeterminism -O--buildsystem=ruby dh_compress -X.rb -O--buildsystem=ruby dh_fixperms -O--buildsystem=ruby dh_missing -O--buildsystem=ruby dh_ruby_fixdepends -O--buildsystem=ruby dh_installdeb -O--buildsystem=ruby dh_gencontrol -O--buildsystem=ruby dpkg-gencontrol: warning: Depends field of package ruby-immutable-ruby: substitution variable ${shlibs:Depends} used, but is not defined dh_md5sums -O--buildsystem=ruby dh_builddeb -O--buildsystem=ruby dpkg-deb: building package 'ruby-immutable-ruby' in '../ruby-immutable-ruby_0.1.0-2_all.deb'. dpkg-genbuildinfo --build=binary -O../ruby-immutable-ruby_0.1.0-2_amd64.buildinfo dpkg-genchanges --build=binary -O../ruby-immutable-ruby_0.1.0-2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/B01_cleanup starting I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/1541770 and its subdirectories I: Current time: Tue Nov 26 16:16:55 +14 2024 I: pbuilder-time-stamp: 1732587415 + false + set +x Tue Nov 26 02:16:55 UTC 2024 I: Signing ./b2/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo as ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc Tue Nov 26 02:16:55 UTC 2024 I: Signed ./b2/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo as ./b2/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc Tue Nov 26 02:16:55 UTC 2024 - build #2 for ruby-immutable-ruby/unstable/amd64 on ionos1-amd64 done. Starting cleanup. All cleanup done. Tue Nov 26 02:16:55 UTC 2024 - reproducible_build.sh stopped running as /tmp/jenkins-script-h5Jap4kc, removing. /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ: total 380 drwxr-xr-x 2 jenkins jenkins 4096 Nov 26 02:14 b1 drwxr-xr-x 2 jenkins jenkins 4096 Nov 26 02:16 b2 -rw------- 1 jenkins jenkins 369578 Nov 26 02:14 rbuildlog.ubRrX3O -rw-r--r-- 1 jenkins jenkins 2161 Sep 17 2023 ruby-immutable-ruby_0.1.0-2.dsc /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b1: total 452 -rw-r--r-- 1 jenkins jenkins 365947 Nov 26 02:14 build.log -rw-r--r-- 1 jenkins jenkins 2840 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2161 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2.dsc -rw-r--r-- 1 jenkins jenkins 46248 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_all.deb -rw-r--r-- 1 jenkins jenkins 8598 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 9480 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1142 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_amd64.changes -rw-r--r-- 1 jenkins jenkins 1301 Nov 26 02:14 ruby-immutable-ruby_0.1.0-2_source.changes /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b2: total 452 -rw-r--r-- 1 jenkins jenkins 367827 Nov 26 02:16 build.log -rw-r--r-- 1 jenkins jenkins 2840 Nov 26 02:16 ruby-immutable-ruby_0.1.0-2.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2161 Nov 26 02:16 ruby-immutable-ruby_0.1.0-2.dsc -rw-r--r-- 1 jenkins jenkins 46248 Nov 26 02:16 ruby-immutable-ruby_0.1.0-2_all.deb -rw-r--r-- 1 jenkins jenkins 8589 Nov 26 02:16 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 9471 Nov 26 02:16 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1142 Nov 26 02:16 ruby-immutable-ruby_0.1.0-2_amd64.changes -rw-r--r-- 1 jenkins jenkins 1301 Nov 26 02:16 ruby-immutable-ruby_0.1.0-2_source.changes Tue Nov 26 02:16:55 UTC 2024 I: Deleting $TMPDIR on ionos1-amd64.debian.net. Tue Nov 26 02:16:56 UTC 2024 I: ruby-immutable-ruby_0.1.0-2_amd64.changes: Format: 1.8 Date: Sun, 17 Sep 2023 16:13:08 -0400 Source: ruby-immutable-ruby Binary: ruby-immutable-ruby Architecture: all Version: 0.1.0-2 Distribution: unstable Urgency: medium Maintainer: Debian Ruby Team Changed-By: Jeremy Bícha Description: ruby-immutable-ruby - efficient, immutable, thread-safe collection classes for Ruby Changes: ruby-immutable-ruby (0.1.0-2) unstable; urgency=medium . * Team upload * Source-only upload Checksums-Sha1: 2dc0e4c7f9511b020b630c74f17c487d278e5463 46248 ruby-immutable-ruby_0.1.0-2_all.deb 325ff2582df1d0dccd8f3e8dafb4b9088030d2a1 8598 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo Checksums-Sha256: 226fbb234ae17056715d71d7f3a7b66bef9a879ba95b497ba4d7415b9431b9e3 46248 ruby-immutable-ruby_0.1.0-2_all.deb 43fe0e3ad932149f6d374f237c64f68447dc1d87580a42ecfe2869d5f017d183 8598 ruby-immutable-ruby_0.1.0-2_amd64.buildinfo Files: 1bf44d89d1bd3ab448350ce4e16b2ef7 46248 ruby optional ruby-immutable-ruby_0.1.0-2_all.deb 1cafc92f024ac41ea20451acba39b589 8598 ruby optional ruby-immutable-ruby_0.1.0-2_amd64.buildinfo removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/ruby-immutable-ruby_0.1.0-2.rbuild.log' removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/ruby-immutable-ruby_0.1.0-2.rbuild.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/unstable/amd64/ruby-immutable-ruby_0.1.0-2.build1.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/unstable/amd64/ruby-immutable-ruby_0.1.0-2.build2.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/buildinfo/unstable/amd64/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo' removed '/var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/ruby-immutable-ruby_0.1.0-2.diff.gz' Diff of the two buildlogs: -- --- b1/build.log 2024-11-26 02:14:49.512494410 +0000 +++ b2/build.log 2024-11-26 02:16:55.654802406 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sun Dec 28 20:34:39 -12 2025 -I: pbuilder-time-stamp: 1766997279 +I: Current time: Tue Nov 26 16:14:51 +14 2024 +I: pbuilder-time-stamp: 1732587291 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -27,52 +27,84 @@ dpkg-source: info: applying no-pry-in-specs.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1057230/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D01_modify_environment starting +debug: Running on ionos1-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Nov 26 02:15 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="32" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.32(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='888831b324c64179aebffbd32d0c7599' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='1057230' - PS1='# ' - PS2='> ' + INVOCATION_ID=97413c1e951141158a4955377211c36d + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=1541770 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/pbuilderrc_GNHn --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b1 --logfile b1/build.log ruby-immutable-ruby_0.1.0-2.dsc' - SUDO_GID='110' - SUDO_UID='105' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://213.165.73.152:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/pbuilderrc_U0E9 --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b2 --logfile b2/build.log ruby-immutable-ruby_0.1.0-2.dsc' + SUDO_GID=110 + SUDO_UID=105 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos5-amd64 6.11.5+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.5-1~bpo12+1 (2024-11-11) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1057230/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -254,7 +286,7 @@ Get: 136 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 137 http://deb.debian.org/debian unstable/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 138 http://deb.debian.org/debian unstable/main amd64 ruby-sorted-set all 1.0.3-3 [4736 B] -Fetched 44.4 MB in 22s (2007 kB/s) +Fetched 44.4 MB in 1s (34.9 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.12-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19965 files and directories currently installed.) @@ -719,8 +751,8 @@ Setting up tzdata (2024b-3) ... Current default time zone: 'Etc/UTC' -Local time is now: Mon Dec 29 08:37:05 UTC 2025. -Universal Time is now: Mon Dec 29 08:37:05 UTC 2025. +Local time is now: Tue Nov 26 02:16:09 UTC 2024. +Universal Time is now: Tue Nov 26 02:16:09 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -842,7 +874,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-immutable-ruby-0.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-immutable-ruby_0.1.0-2_source.changes +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-immutable-ruby-0.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-immutable-ruby_0.1.0-2_source.changes dpkg-buildpackage: info: source package ruby-immutable-ruby dpkg-buildpackage: info: source version 0.1.0-2 dpkg-buildpackage: info: source distribution unstable @@ -875,7 +911,7 @@ │ ruby-immutable-ruby: Installing files and building extensions for ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20251228-1079708-p8tiao/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20241126-1553380-zfqh4g/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: description and summary are identical WARNING: open-ended dependency on bundler (>= 2.2.10, development) is not recommended @@ -886,7 +922,7 @@ Name: immutable-ruby Version: 0.1.0 File: immutable-ruby-0.1.0.gem -/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-immutable-ruby/usr/share/rubygems-integration/all /tmp/d20251228-1079708-p8tiao/immutable-ruby-0.1.0.gem +/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-immutable-ruby/usr/share/rubygems-integration/all /tmp/d20241126-1553380-zfqh4g/immutable-ruby-0.1.0.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable.rb /build/reproducible-path/ruby-immutable-ruby-0.1.0/debian/ruby-immutable-ruby/usr/share/rubygems-integration/all/gems/immutable-ruby-0.1.0/lib/immutable/core_ext.rb @@ -2872,8 +2908,8 @@ Immutable::List Immutable::List["A", "B", "C"] should == ["A", "B", "C"] Immutable::List["A", "B", "C"] should not eql? ["A", "B", "C"] - Immutable::List["A", "B", "C"] should not == # - Immutable::List["A", "B", "C"] should not eql? # + Immutable::List["A", "B", "C"] should not == # + Immutable::List["A", "B", "C"] should not eql? # Immutable::List[] should == [] Immutable::List[] should not eql? [] Immutable::List[] should eql? Immutable::List[] @@ -4341,7 +4377,7 @@ Immutable .from with {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} as input - should return Immutable::Hash["b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "a" => 1, "d" => Immutable::Set[6, 7, 5], "e" => Immutable::Hash["f" => 8, "g" => 9], "h" => /ijk/] + should return Immutable::Hash["d" => Immutable::Set[5, 7, 6], "b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "h" => /ijk/, "a" => 1, "e" => Immutable::Hash["f" => 8, "g" => 9]] with {} as input should return Immutable::Hash[] with {"a"=>1, "b"=>2, "c"=>3} as input @@ -4359,13 +4395,13 @@ with #> as input should return #> with # as input - should return Immutable::Hash[:name => nil, :address => nil] + should return Immutable::Hash[:address => nil, :name => nil] with # as input - should return Immutable::Hash[:name => "Dave", :address => "123 Main"] + should return Immutable::Hash[:address => "123 Main", :name => "Dave"] with mixed object should return Immutable data .to_ruby - with Immutable::Hash["b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "a" => 1, "d" => Immutable::Set[6, 7, 5], "e" => Immutable::Hash["f" => 8, "g" => 9], "h" => /ijk/] as input + with Immutable::Hash["d" => Immutable::Set[5, 7, 6], "b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4], "h" => /ijk/, "a" => 1, "e" => Immutable::Hash["f" => 8, "g" => 9]] as input should return {"a"=>1, "b"=>[2, {"c"=>3}, 4], "d"=>#, "e"=>{"f"=>8, "g"=>9}, "h"=>/ijk/} with Immutable::Hash[] as input should return {} @@ -10090,51 +10126,51 @@ Deque can be loaded separately -Top 10 slowest examples (3.23 seconds, 31.0% of total time): +Top 10 slowest examples (5.61 seconds, 31.6% of total time): Immutable::List#each_chunk on a really big list doesn't run out of stack - 0.60002 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 - Immutable::List#partition calls the passed block only once for each item, even with multiple threads - 0.47634 seconds ./spec/lib/immutable/list/partition_spec.rb:38 + 1.09 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List#each_slice on a really big list doesn't run out of stack - 0.41894 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 + 0.81733 seconds ./spec/lib/immutable/list/each_slice_spec.rb:7 Immutable::List ensures each node of a lazy list will only be realized on ONE thread, even when accessed by multiple threads - 0.35447 seconds ./spec/lib/immutable/list/multithreading_spec.rb:5 - Immutable::Set#marshal_dump/#marshal_load is still possible to test items by key after loading - 0.32587 seconds ./spec/lib/immutable/set/marshal_spec.rb:23 + 0.69312 seconds ./spec/lib/immutable/list/multithreading_spec.rb:5 + Immutable::List#partition calls the passed block only once for each item, even with multiple threads + 0.51227 seconds ./spec/lib/immutable/list/partition_spec.rb:38 + Immutable::Hash#select works on a large hash, with many combinations of input + 0.50142 seconds ./spec/lib/immutable/hash/select_spec.rb:43 Immutable::List#hash on a really big list doesn't run out of stack - 0.31016 seconds ./spec/lib/immutable/list/hash_spec.rb:6 - Immutable::Hash#length has the correct size after lots of addings and removings - 0.19527 seconds ./spec/lib/immutable/hash/size_spec.rb:38 + 0.46343 seconds ./spec/lib/immutable/list/hash_spec.rb:6 + Immutable::Set#find_all works on a large set, with many combinations of input + 0.42719 seconds ./spec/lib/immutable/set/select_spec.rb:59 + Immutable::Set#select works on a large set, with many combinations of input + 0.40807 seconds ./spec/lib/immutable/set/select_spec.rb:59 Immutable::List#eql? on a really big list doesn't run out of stack - 0.18929 seconds ./spec/lib/immutable/list/eql_spec.rb:6 + 0.35064 seconds ./spec/lib/immutable/list/eql_spec.rb:6 Immutable::List#all? on a really big list doesn't run out of stack - 0.18642 seconds ./spec/lib/immutable/list/all_spec.rb:8 - Immutable::Deque#marshal_dump/#marshal_load can survive dumping and loading into a new process - 0.1756 seconds ./spec/lib/immutable/deque/marshal_spec.rb:20 + 0.34489 seconds ./spec/lib/immutable/list/all_spec.rb:8 Top 10 slowest example groups: - Immutable::Set - 0.24602 seconds average (0.49203 seconds / 2 examples) ./spec/lib/immutable/set/marshal_spec.rb:3 Immutable::Deque - 0.17167 seconds average (0.34335 seconds / 2 examples) ./spec/lib/immutable/deque/marshal_spec.rb:3 - Immutable::Vector - 0.16939 seconds average (0.33878 seconds / 2 examples) ./spec/lib/immutable/vector/marshal_spec.rb:3 - Immutable::Hash - 0.1687 seconds average (0.33739 seconds / 2 examples) ./spec/lib/immutable/hash/marshal_spec.rb:3 + 0.28135 seconds average (0.56269 seconds / 2 examples) ./spec/lib/immutable/deque/marshal_spec.rb:3 Immutable::List - 0.157 seconds average (0.471 seconds / 3 examples) ./spec/lib/immutable/list/multithreading_spec.rb:4 + 0.27404 seconds average (0.82211 seconds / 3 examples) ./spec/lib/immutable/list/multithreading_spec.rb:4 + Immutable::Hash + 0.2681 seconds average (0.53621 seconds / 2 examples) ./spec/lib/immutable/hash/marshal_spec.rb:3 + Immutable::Set + 0.26343 seconds average (0.52687 seconds / 2 examples) ./spec/lib/immutable/set/marshal_spec.rb:3 + Immutable::Vector + 0.25538 seconds average (0.51076 seconds / 2 examples) ./spec/lib/immutable/vector/marshal_spec.rb:3 Immutable - 0.11384 seconds average (0.68301 seconds / 6 examples) ./spec/lib/load_spec.rb:6 + 0.18195 seconds average (1.09 seconds / 6 examples) ./spec/lib/load_spec.rb:6 Immutable::SortedSet - 0.1105 seconds average (0.33149 seconds / 3 examples) ./spec/lib/immutable/sorted_set/marshal_spec.rb:3 + 0.17516 seconds average (0.52547 seconds / 3 examples) ./spec/lib/immutable/sorted_set/marshal_spec.rb:3 Immutable::List - 0.10542 seconds average (0.31626 seconds / 3 examples) ./spec/lib/immutable/list/hash_spec.rb:3 + 0.15813 seconds average (0.47438 seconds / 3 examples) ./spec/lib/immutable/list/hash_spec.rb:3 Immutable::Hash - 0.0551 seconds average (0.55098 seconds / 10 examples) ./spec/lib/immutable/hash/size_spec.rb:3 - Immutable::List - 0.03224 seconds average (1.03 seconds / 32 examples) ./spec/lib/immutable/list/each_slice_spec.rb:3 + 0.08253 seconds average (0.82529 seconds / 10 examples) ./spec/lib/immutable/hash/size_spec.rb:3 + Immutable::Hash + 0.06847 seconds average (0.34233 seconds / 5 examples) ./spec/lib/immutable/hash/except_spec.rb:3 -Finished in 10.43 seconds (files took 5.3 seconds to load) +Finished in 17.74 seconds (files took 2.62 seconds to load) 4608 examples, 0 failures @@ -10166,12 +10202,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/1541770/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/1057230 and its subdirectories -I: Current time: Sun Dec 28 20:37:48 -12 2025 -I: pbuilder-time-stamp: 1766997468 +I: removing directory /srv/workspace/pbuilder/1541770 and its subdirectories +I: Current time: Tue Nov 26 16:16:55 +14 2024 +I: pbuilder-time-stamp: 1732587415 Compressing the 2nd log... /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/ruby-immutable-ruby_0.1.0-2.diff: 72.0% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/ruby-immutable-ruby_0.1.0-2.diff.gz b2/build.log: 87.2% -- replaced with stdout Compressing the 1st log... b1/build.log: 87.3% -- replaced with stdout Tue Nov 26 02:16:57 UTC 2024 I: diffoscope 283 will be used to compare the two builds: ++ date -u +%s + DIFFOSCOPE_STAMP=/var/log/reproducible-builds/diffoscope_stamp_ruby-immutable-ruby_unstable_amd64_1732587417 + touch /var/log/reproducible-builds/diffoscope_stamp_ruby-immutable-ruby_unstable_amd64_1732587417 + RESULT=0 + systemd-run '--description=diffoscope on ruby-immutable-ruby/0.1.0-2 in unstable/amd64' --slice=rb-build-diffoscope.slice -u rb-diffoscope-amd64_18-23879 '--property=SuccessExitStatus=1 124' --user --send-sighup --pipe --wait -E TMPDIR timeout 155m nice schroot --directory /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ --run-session -c jenkins-reproducible-unstable-diffoscope-b40eface-3990-49d8-8a51-884b4600c3b7 -- sh -c 'export TMPDIR=/srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/dbd-tmp-EnO8Dik ; timeout 150m diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/ruby-immutable-ruby_0.1.0-2.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/ruby-immutable-ruby_0.1.0-2.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/ruby-immutable-ruby_0.1.0-2.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b1/ruby-immutable-ruby_0.1.0-2_amd64.changes /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b2/ruby-immutable-ruby_0.1.0-2_amd64.changes' + false + set +x Running as unit: rb-diffoscope-amd64_18-23879.service # Profiling output for: /usr/bin/diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/ruby-immutable-ruby_0.1.0-2.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/ruby-immutable-ruby_0.1.0-2.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/ruby-immutable-ruby_0.1.0-2.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b1/ruby-immutable-ruby_0.1.0-2_amd64.changes /srv/reproducible-results/rbuild-debian/r-b-build.OVFGgtDZ/b2/ruby-immutable-ruby_0.1.0-2_amd64.changes ## command (total time: 0.000s) 0.000s 1 call cmp (internal) ## has_same_content_as (total time: 0.000s) 0.000s 1 call abc.DotChangesFile ## main (total time: 0.357s) 0.357s 2 calls outputs 0.000s 1 call cleanup ## recognizes (total time: 0.014s) 0.014s 12 calls diffoscope.comparators.binary.FilesystemFile ## specialize (total time: 0.000s) 0.000s 1 call specialize Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 705ms CPU time consumed: 686ms _ _ _ _ _ _ __ _ _| |__ _ _ (_)_ __ ___ _ __ ___ _ _| |_ __ _| |__ | | | '__| | | | '_ \| | | |_____| | '_ ` _ \| '_ ` _ \| | | | __/ _` | '_ \| | | | | |_| | |_) | |_| |_____| | | | | | | | | | | | |_| | || (_| | |_) | | |_| \__,_|_.__/ \__, | |_|_| |_| |_|_| |_| |_|\__,_|\__\__,_|_.__/|_| |___/ _ ___ _ __ _ _| |__ _ _ / _ \_____| '__| | | | '_ \| | | | | __/_____| | | |_| | |_) | |_| | \___| |_| \__,_|_.__/ \__, | |___/ Tue Nov 26 02:30:27 UTC 2024 I: diffoscope 283 found no differences in the changes files, and a .buildinfo file also exists. Tue Nov 26 02:30:27 UTC 2024 I: ruby-immutable-ruby from unstable built successfully and reproducibly on amd64. INSERT 0 1 INSERT 0 1 DELETE 1 [2024-11-26 02:30:29] INFO: Starting at 2024-11-26 02:30:29.531576 [2024-11-26 02:30:29] INFO: Generating the pages of 1 package(s) [2024-11-26 02:30:29] CRITICAL: https://tests.reproducible-builds.org/debian/unstable/amd64/ruby-immutable-ruby didn't produce a buildlog, even though it has been built. [2024-11-26 02:30:30] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/arm64/ruby-immutable-ruby_0.1.0-2.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/arm64/ruby-immutable-ruby_0.1.0-2.diff.gz is missing [2024-11-26 02:30:30] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/i386/ruby-immutable-ruby_0.1.0-2.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/i386/ruby-immutable-ruby_0.1.0-2.diff.gz is missing [2024-11-26 02:30:30] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/trixie/arm64/ruby-immutable-ruby_0.1.0-2.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/trixie/arm64/ruby-immutable-ruby_0.1.0-2.diff.gz is missing [2024-11-26 02:30:30] INFO: Finished at 2024-11-26 02:30:30.458541, took: 0:00:00.926974 Tue Nov 26 02:30:30 UTC 2024 - successfully updated the database and updated https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/ruby-immutable-ruby.html Tue Nov 26 02:30:30 UTC 2024 I: Submitting .buildinfo files to external archives: Tue Nov 26 02:30:30 UTC 2024 I: Submitting 12K b1/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc https://buildinfo.debian.net/325ff2582df1d0dccd8f3e8dafb4b9088030d2a1/ruby-immutable-ruby_0.1.0-2_all Tue Nov 26 02:30:36 UTC 2024 I: Submitting 12K b2/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc https://buildinfo.debian.net/c2bc18dccf3886fa5ae4d1676a08f19698cf0db6/ruby-immutable-ruby_0.1.0-2_all Tue Nov 26 02:31:02 UTC 2024 I: Done submitting .buildinfo files to http://buildinfo.debian.net/api/submit. Tue Nov 26 02:31:02 UTC 2024 I: Done submitting .buildinfo files. Tue Nov 26 02:31:02 UTC 2024 I: Removing signed ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc files: removed './b1/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc' removed './b2/ruby-immutable-ruby_0.1.0-2_amd64.buildinfo.asc' 1732588262 amd64 unstable ruby-immutable-ruby Starting cleanup. /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/ruby-immutable-ruby_0.1.0-2.rbuild.log: 86.7% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/ruby-immutable-ruby_0.1.0-2.rbuild.log.gz [2024-11-26 02:31:02] INFO: Starting at 2024-11-26 02:31:02.431521 [2024-11-26 02:31:02] INFO: Generating the pages of 1 package(s) [2024-11-26 02:31:02] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/arm64/ruby-immutable-ruby_0.1.0-2.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/arm64/ruby-immutable-ruby_0.1.0-2.diff.gz is missing [2024-11-26 02:31:02] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/i386/ruby-immutable-ruby_0.1.0-2.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/i386/ruby-immutable-ruby_0.1.0-2.diff.gz is missing [2024-11-26 02:31:02] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/trixie/arm64/ruby-immutable-ruby_0.1.0-2.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/trixie/arm64/ruby-immutable-ruby_0.1.0-2.diff.gz is missing [2024-11-26 02:31:02] INFO: Finished at 2024-11-26 02:31:02.625465, took: 0:00:00.193951 All cleanup done. Tue Nov 26 02:31:02 UTC 2024 - total duration: 0h 18m 56s. Tue Nov 26 02:31:02 UTC 2024 - reproducible_build.sh stopped running as /tmp/jenkins-script-aUmuToeD, removing. Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 19min 31.483s CPU time consumed: 8.655s