I: pbuilder: network access will be disabled during build
I: Current time: Tue Mar 10 19:04:12 -12 2026
I: pbuilder-time-stamp: 1773212652
I: Building the build Environment
I: extracting base tarball [/var/cache/pbuilder/trixie-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: using eatmydata during job
I: Copying source file
I: copying [ruby-rubocop-ast_1.24.0-2.dsc]
I: copying [./ruby-rubocop-ast_1.24.0.orig.tar.gz]
I: copying [./ruby-rubocop-ast_1.24.0-2.debian.tar.xz]
I: Extracting source
dpkg-source: warning: cannot verify inline signature for ./ruby-rubocop-ast_1.24.0-2.dsc: unsupported subcommand
dpkg-source: info: extracting ruby-rubocop-ast in ruby-rubocop-ast-1.24.0
dpkg-source: info: unpacking ruby-rubocop-ast_1.24.0.orig.tar.gz
dpkg-source: info: unpacking ruby-rubocop-ast_1.24.0-2.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying 0001-gemspec-drop-git-usage.patch
dpkg-source: info: applying 0002-Fix-compile-task.patch
I: Not using root during the build.
I: Installing the build-deps
I: user script /srv/workspace/pbuilder/49287/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='i386'
  DEBIAN_FRONTEND='noninteractive'
  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=22 '
  DISTRIBUTION='trixie'
  HOME='/root'
  HOST_ARCH='i386'
  IFS=' 	
  '
  INVOCATION_ID='84bc706297d04557a804eba120955819'
  LANG='C'
  LANGUAGE='en_US:en'
  LC_ALL='C'
  LD_LIBRARY_PATH='/usr/lib/libeatmydata'
  LD_PRELOAD='libeatmydata.so'
  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='49287'
  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.RskQSiGg/pbuilderrc_0KiW --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.RskQSiGg/b1 --logfile b1/build.log ruby-rubocop-ast_1.24.0-2.dsc'
  SUDO_GID='112'
  SUDO_UID='107'
  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 ionos6-i386 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) 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/49287/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: i386
Maintainer: Debian Pbuilder Team <pbuilder-maint@lists.alioth.debian.org>
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), racc, rake, ruby-oedipus-lex, ruby-rspec, ruby-whitequark-parser (>= 3.1.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 ... 19829 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 racc; however:
  Package racc is not installed.
 pbuilder-satisfydepends-dummy depends on rake; however:
  Package rake is not installed.
 pbuilder-satisfydepends-dummy depends on ruby-oedipus-lex; however:
  Package ruby-oedipus-lex is not installed.
 pbuilder-satisfydepends-dummy depends on ruby-rspec; however:
  Package ruby-rspec is not installed.
 pbuilder-satisfydepends-dummy depends on ruby-whitequark-parser (>= 3.1.1.0); however:
  Package ruby-whitequark-parser 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} gpgv{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} libdebhelper-perl{a} libdevel-callchecker-perl{a} libdynaloader-functions-perl{a} libedit2{a} libelf1t64{a} libencode-locale-perl{a} libexpat1{a} libffi8{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} libgcrypt20{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls30t64{a} libgpg-error0{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} libidn2-0{a} libimport-into-perl{a} libio-html-perl{a} libio-pty-perl{a} libio-socket-ssl-perl{a} libipc-run-perl{a} libksba8{a} libldap2{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} libp11-kit0{a} libparams-classify-perl{a} libpipeline1{a} libpython3-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libreadline8t64{a} librole-tiny-perl{a} libruby{a} libruby3.1t64{a} libruby3.3{a} libsasl2-2{a} libsasl2-modules-db{a} libsub-quote-perl{a} libtasn1-6{a} libtimedate-perl{a} libtool{a} libtry-tiny-perl{a} libuchardet0{a} libunistring5{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.13{a} python3.13-minimal{a} racc{a} rake{a} readline-common{a} ruby{a} ruby-all-dev{a} ruby-ast{a} ruby-diff-lcs{a} ruby-net-telnet{a} ruby-oedipus-lex{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-webrick{a} ruby-whitequark-parser{a} ruby-xmlrpc{a} ruby3.1{a} ruby3.1-dev{a} ruby3.3{a} ruby3.3-dev{a} rubygems-integration{a} sensible-utils{a} sopv-gpgv{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 libarchive-cpio-perl libdata-dump-perl libdistro-info-perl libgit-wrapper-perl libgitlab-api-v4-perl libgpg-error-l10n 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-argcomplete python3-debian python3-magic python3-requests python3-unidiff python3-xdg ruby3.1-doc ruby3.3-doc strace unzip wget zip 
0 packages upgraded, 143 newly installed, 0 to remove and 0 not upgraded.
Need to get 57.0 MB of archives. After unpacking 219 MB will be used.
Writing extended state information...
Get: 1 http://deb.debian.org/debian trixie/main i386 libpython3.13-minimal i386 3.13.1-3+b1 [858 kB]
Get: 2 http://deb.debian.org/debian trixie/main i386 libexpat1 i386 2.6.4-1 [107 kB]
Get: 3 http://deb.debian.org/debian trixie/main i386 python3.13-minimal i386 3.13.1-3+b1 [2244 kB]
Get: 4 http://deb.debian.org/debian trixie/main i386 python3-minimal i386 3.13.1-2 [27.0 kB]
Get: 5 http://deb.debian.org/debian trixie/main i386 media-types all 10.1.0 [26.9 kB]
Get: 6 http://deb.debian.org/debian trixie/main i386 netbase all 6.4 [12.8 kB]
Get: 7 http://deb.debian.org/debian trixie/main i386 tzdata all 2024b-6 [257 kB]
Get: 8 http://deb.debian.org/debian trixie/main i386 libffi8 i386 3.4.6-1 [21.2 kB]
Get: 9 http://deb.debian.org/debian trixie/main i386 readline-common all 8.2-6 [69.4 kB]
Get: 10 http://deb.debian.org/debian trixie/main i386 libreadline8t64 i386 8.2-6 [173 kB]
Get: 11 http://deb.debian.org/debian trixie/main i386 libpython3.13-stdlib i386 3.13.1-3+b1 [1981 kB]
Get: 12 http://deb.debian.org/debian trixie/main i386 python3.13 i386 3.13.1-3+b1 [740 kB]
Get: 13 http://deb.debian.org/debian trixie/main i386 libpython3-stdlib i386 3.13.1-2 [9952 B]
Get: 14 http://deb.debian.org/debian trixie/main i386 python3 i386 3.13.1-2 [28.0 kB]
Get: 15 http://deb.debian.org/debian trixie/main i386 sensible-utils all 0.0.24 [24.8 kB]
Get: 16 http://deb.debian.org/debian trixie/main i386 openssl i386 3.4.0-2 [1427 kB]
Get: 17 http://deb.debian.org/debian trixie/main i386 ca-certificates all 20241223 [164 kB]
Get: 18 http://deb.debian.org/debian trixie/main i386 libmagic-mgc i386 1:5.45-3+b1 [314 kB]
Get: 19 http://deb.debian.org/debian trixie/main i386 libmagic1t64 i386 1:5.45-3+b1 [115 kB]
Get: 20 http://deb.debian.org/debian trixie/main i386 file i386 1:5.45-3+b1 [43.2 kB]
Get: 21 http://deb.debian.org/debian trixie/main i386 gettext-base i386 0.23.1-1 [245 kB]
Get: 22 http://deb.debian.org/debian trixie/main i386 libuchardet0 i386 0.0.8-1+b2 [69.2 kB]
Get: 23 http://deb.debian.org/debian trixie/main i386 groff-base i386 1.23.0-7 [1199 kB]
Get: 24 http://deb.debian.org/debian trixie/main i386 bsdextrautils i386 2.40.4-2 [96.1 kB]
Get: 25 http://deb.debian.org/debian trixie/main i386 libpipeline1 i386 1.5.8-1 [41.2 kB]
Get: 26 http://deb.debian.org/debian trixie/main i386 man-db i386 2.13.0-1 [1428 kB]
Get: 27 http://deb.debian.org/debian trixie/main i386 m4 i386 1.4.19-5 [301 kB]
Get: 28 http://deb.debian.org/debian trixie/main i386 autoconf all 2.72-3 [493 kB]
Get: 29 http://deb.debian.org/debian trixie/main i386 autotools-dev all 20220109.1 [51.6 kB]
Get: 30 http://deb.debian.org/debian trixie/main i386 automake all 1:1.16.5-1.3 [823 kB]
Get: 31 http://deb.debian.org/debian trixie/main i386 autopoint all 0.23.1-1 [770 kB]
Get: 32 http://deb.debian.org/debian trixie/main i386 libdebhelper-perl all 13.24.1 [90.9 kB]
Get: 33 http://deb.debian.org/debian trixie/main i386 libtool all 2.5.4-2 [539 kB]
Get: 34 http://deb.debian.org/debian trixie/main i386 dh-autoreconf all 20 [17.1 kB]
Get: 35 http://deb.debian.org/debian trixie/main i386 libarchive-zip-perl all 1.68-1 [104 kB]
Get: 36 http://deb.debian.org/debian trixie/main i386 libfile-stripnondeterminism-perl all 1.14.1-1 [19.6 kB]
Get: 37 http://deb.debian.org/debian trixie/main i386 dh-strip-nondeterminism all 1.14.1-1 [8584 B]
Get: 38 http://deb.debian.org/debian trixie/main i386 libelf1t64 i386 0.192-4 [195 kB]
Get: 39 http://deb.debian.org/debian trixie/main i386 dwz i386 0.15-1+b1 [116 kB]
Get: 40 http://deb.debian.org/debian trixie/main i386 libunistring5 i386 1.3-1 [458 kB]
Get: 41 http://deb.debian.org/debian trixie/main i386 libicu72 i386 72.1-6 [9582 kB]
Get: 42 http://deb.debian.org/debian trixie/main i386 libxml2 i386 2.12.7+dfsg+really2.9.14-0.2+b1 [734 kB]
Get: 43 http://deb.debian.org/debian trixie/main i386 gettext i386 0.23.1-1 [1714 kB]
Get: 44 http://deb.debian.org/debian trixie/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB]
Get: 45 http://deb.debian.org/debian trixie/main i386 po-debconf all 1.0.21+nmu1 [248 kB]
Get: 46 http://deb.debian.org/debian trixie/main i386 debhelper all 13.24.1 [920 kB]
Get: 47 http://deb.debian.org/debian trixie/main i386 libgpg-error0 i386 1.51-3 [87.3 kB]
Get: 48 http://deb.debian.org/debian trixie/main i386 libassuan9 i386 3.0.1-2 [62.4 kB]
Get: 49 http://deb.debian.org/debian trixie/main i386 libgcrypt20 i386 1.11.0-7 [799 kB]
Get: 50 http://deb.debian.org/debian trixie/main i386 gpgconf i386 2.2.46-1+b1 [128 kB]
Get: 51 http://deb.debian.org/debian trixie/main i386 libidn2-0 i386 2.3.7-2+b1 [130 kB]
Get: 52 http://deb.debian.org/debian trixie/main i386 libp11-kit0 i386 0.25.5-3 [423 kB]
Get: 53 http://deb.debian.org/debian trixie/main i386 libtasn1-6 i386 4.19.0-3+b3 [51.1 kB]
Get: 54 http://deb.debian.org/debian trixie/main i386 libgnutls30t64 i386 3.8.8-2 [1451 kB]
Get: 55 http://deb.debian.org/debian trixie/main i386 libksba8 i386 1.6.7-2+b1 [142 kB]
Get: 56 http://deb.debian.org/debian trixie/main i386 libsasl2-modules-db i386 2.1.28+dfsg1-8+b1 [20.9 kB]
Get: 57 http://deb.debian.org/debian trixie/main i386 libsasl2-2 i386 2.1.28+dfsg1-8+b1 [61.3 kB]
Get: 58 http://deb.debian.org/debian trixie/main i386 libldap2 i386 2.6.9+dfsg-1 [205 kB]
Get: 59 http://deb.debian.org/debian trixie/main i386 libnpth0t64 i386 1.8-2 [23.0 kB]
Get: 60 http://deb.debian.org/debian trixie/main i386 dirmngr i386 2.2.46-1+b1 [396 kB]
Get: 61 http://deb.debian.org/debian trixie/main i386 gnupg-l10n all 2.2.46-1 [702 kB]
Get: 62 http://deb.debian.org/debian trixie/main i386 gpg i386 2.2.46-1+b1 [574 kB]
Get: 63 http://deb.debian.org/debian trixie/main i386 pinentry-curses i386 1.3.1-2 [88.0 kB]
Get: 64 http://deb.debian.org/debian trixie/main i386 gpg-agent i386 2.2.46-1+b1 [270 kB]
Get: 65 http://deb.debian.org/debian trixie/main i386 gpgsm i386 2.2.46-1+b1 [276 kB]
Get: 66 http://deb.debian.org/debian trixie/main i386 gnupg all 2.2.46-1 [376 kB]
Get: 67 http://deb.debian.org/debian trixie/main i386 gpgv i386 2.2.46-1+b1 [240 kB]
Get: 68 http://deb.debian.org/debian trixie/main i386 sopv-gpgv all 0.1.1-1 [10.7 kB]
Get: 69 http://deb.debian.org/debian trixie/main i386 libfile-dirlist-perl all 0.05-3 [7600 B]
Get: 70 http://deb.debian.org/debian trixie/main i386 libfile-which-perl all 1.27-2 [15.1 kB]
Get: 71 http://deb.debian.org/debian trixie/main i386 libfile-homedir-perl all 1.006-2 [42.4 kB]
Get: 72 http://deb.debian.org/debian trixie/main i386 libfile-touch-perl all 0.12-2 [8816 B]
Get: 73 http://deb.debian.org/debian trixie/main i386 libio-pty-perl i386 1:1.20-1+b3 [35.8 kB]
Get: 74 http://deb.debian.org/debian trixie/main i386 libipc-run-perl all 20231003.0-2 [101 kB]
Get: 75 http://deb.debian.org/debian trixie/main i386 libclass-method-modifiers-perl all 2.15-1 [18.0 kB]
Get: 76 http://deb.debian.org/debian trixie/main i386 libclass-xsaccessor-perl i386 1.19-4+b4 [37.5 kB]
Get: 77 http://deb.debian.org/debian trixie/main i386 libb-hooks-op-check-perl i386 0.22-3+b2 [10.7 kB]
Get: 78 http://deb.debian.org/debian trixie/main i386 libdynaloader-functions-perl all 0.004-1 [12.1 kB]
Get: 79 http://deb.debian.org/debian trixie/main i386 libdevel-callchecker-perl i386 0.009-1+b1 [16.2 kB]
Get: 80 http://deb.debian.org/debian trixie/main i386 libparams-classify-perl i386 0.015-2+b4 [23.1 kB]
Get: 81 http://deb.debian.org/debian trixie/main i386 libmodule-runtime-perl all 0.016-2 [19.6 kB]
Get: 82 http://deb.debian.org/debian trixie/main i386 libimport-into-perl all 1.002005-2 [11.3 kB]
Get: 83 http://deb.debian.org/debian trixie/main i386 librole-tiny-perl all 2.002004-1 [21.4 kB]
Get: 84 http://deb.debian.org/debian trixie/main i386 libsub-quote-perl all 2.006008-1 [21.8 kB]
Get: 85 http://deb.debian.org/debian trixie/main i386 libmoo-perl all 2.005005-1 [58.0 kB]
Get: 86 http://deb.debian.org/debian trixie/main i386 libencode-locale-perl all 1.05-3 [12.9 kB]
Get: 87 http://deb.debian.org/debian trixie/main i386 libtimedate-perl all 2.3300-2 [39.3 kB]
Get: 88 http://deb.debian.org/debian trixie/main i386 libhttp-date-perl all 6.06-1 [10.7 kB]
Get: 89 http://deb.debian.org/debian trixie/main i386 libfile-listing-perl all 6.16-1 [12.4 kB]
Get: 90 http://deb.debian.org/debian trixie/main i386 libhtml-tagset-perl all 3.24-1 [14.7 kB]
Get: 91 http://deb.debian.org/debian trixie/main i386 liburi-perl all 5.30-1 [105 kB]
Get: 92 http://deb.debian.org/debian trixie/main i386 libhtml-parser-perl i386 3.83-1+b2 [101 kB]
Get: 93 http://deb.debian.org/debian trixie/main i386 libhtml-tree-perl all 5.07-3 [211 kB]
Get: 94 http://deb.debian.org/debian trixie/main i386 libclone-perl i386 0.47-1+b1 [14.0 kB]
Get: 95 http://deb.debian.org/debian trixie/main i386 libio-html-perl all 1.004-3 [16.2 kB]
Get: 96 http://deb.debian.org/debian trixie/main i386 liblwp-mediatypes-perl all 6.04-2 [20.2 kB]
Get: 97 http://deb.debian.org/debian trixie/main i386 libhttp-message-perl all 7.00-2 [79.8 kB]
Get: 98 http://deb.debian.org/debian trixie/main i386 libhttp-cookies-perl all 6.11-1 [19.1 kB]
Get: 99 http://deb.debian.org/debian trixie/main i386 libhttp-negotiate-perl all 6.01-2 [13.1 kB]
Get: 100 http://deb.debian.org/debian trixie/main i386 perl-openssl-defaults i386 7+b2 [6720 B]
Get: 101 http://deb.debian.org/debian trixie/main i386 libnet-ssleay-perl i386 1.94-2 [340 kB]
Get: 102 http://deb.debian.org/debian trixie/main i386 libio-socket-ssl-perl all 2.089-1 [223 kB]
Get: 103 http://deb.debian.org/debian trixie/main i386 libnet-http-perl all 6.23-1 [23.9 kB]
Get: 104 http://deb.debian.org/debian trixie/main i386 liblwp-protocol-https-perl all 6.14-1 [10.8 kB]
Get: 105 http://deb.debian.org/debian trixie/main i386 libtry-tiny-perl all 0.32-1 [22.9 kB]
Get: 106 http://deb.debian.org/debian trixie/main i386 libwww-robotrules-perl all 6.02-1 [12.9 kB]
Get: 107 http://deb.debian.org/debian trixie/main i386 libwww-perl all 6.77-1 [183 kB]
Get: 108 http://deb.debian.org/debian trixie/main i386 patchutils i386 0.4.2-1 [79.6 kB]
Get: 109 http://deb.debian.org/debian trixie/main i386 wdiff i386 1.2.2-7 [123 kB]
Get: 110 http://deb.debian.org/debian trixie/main i386 devscripts all 2.25.1 [1053 kB]
Get: 111 http://deb.debian.org/debian trixie/main i386 rubygems-integration all 1.19 [5488 B]
Get: 112 http://deb.debian.org/debian trixie/main i386 ruby-net-telnet all 0.2.0-1 [13.1 kB]
Get: 113 http://deb.debian.org/debian trixie/main i386 ruby-webrick all 1.8.1-1 [51.4 kB]
Get: 114 http://deb.debian.org/debian trixie/main i386 ruby-xmlrpc all 0.3.3-2 [24.4 kB]
Get: 115 http://deb.debian.org/debian trixie/main i386 libyaml-0-2 i386 0.2.5-2 [55.8 kB]
Get: 116 http://deb.debian.org/debian trixie/main i386 libruby3.3 i386 3.3.7-1 [6385 kB]
Get: 117 http://deb.debian.org/debian trixie/main i386 libruby i386 1:3.1+support3.3 [4888 B]
Get: 118 http://deb.debian.org/debian trixie/main i386 ruby-sdbm i386 1.0.0-5+b6 [20.3 kB]
Get: 119 http://deb.debian.org/debian trixie/main i386 libedit2 i386 3.1-20250104-1 [98.1 kB]
Get: 120 http://deb.debian.org/debian trixie/main i386 libncurses6 i386 6.5-2+b1 [112 kB]
Get: 121 http://deb.debian.org/debian trixie/main i386 libruby3.1t64 i386 3.1.2-8.5 [5470 kB]
Get: 122 http://deb.debian.org/debian trixie/main i386 ruby3.1 i386 3.1.2-8.5 [664 kB]
Get: 123 http://deb.debian.org/debian trixie/main i386 ruby-rubygems all 3.6.3-1 [406 kB]
Get: 124 http://deb.debian.org/debian trixie/main i386 ruby i386 1:3.1+support3.3 [5944 B]
Get: 125 http://deb.debian.org/debian trixie/main i386 rake all 13.2.1-1 [65.2 kB]
Get: 126 http://deb.debian.org/debian trixie/main i386 gem2deb-test-runner i386 2.2.5 [17.9 kB]
Get: 127 http://deb.debian.org/debian trixie/main i386 libgmpxx4ldbl i386 2:6.3.0+dfsg-3 [329 kB]
Get: 128 http://deb.debian.org/debian trixie/main i386 libgmp-dev i386 2:6.3.0+dfsg-3 [661 kB]
Get: 129 http://deb.debian.org/debian trixie/main i386 ruby3.1-dev i386 3.1.2-8.5 [1003 kB]
Get: 130 http://deb.debian.org/debian trixie/main i386 ruby3.3 i386 3.3.7-1 [827 kB]
Get: 131 http://deb.debian.org/debian trixie/main i386 ruby3.3-dev i386 3.3.7-1 [1038 kB]
Get: 132 http://deb.debian.org/debian trixie/main i386 ruby-all-dev i386 1:3.1+support3.3 [5976 B]
Get: 133 http://deb.debian.org/debian trixie/main i386 gem2deb i386 2.2.5 [48.0 kB]
Get: 134 http://deb.debian.org/debian trixie/main i386 racc all 1.8.1-1 [75.4 kB]
Get: 135 http://deb.debian.org/debian trixie/main i386 ruby-ast all 2.4.2-1 [10.7 kB]
Get: 136 http://deb.debian.org/debian trixie/main i386 ruby-diff-lcs all 1.5.1-1 [28.1 kB]
Get: 137 http://deb.debian.org/debian trixie/main i386 ruby-oedipus-lex all 2.6.0-2 [19.1 kB]
Get: 138 http://deb.debian.org/debian trixie/main i386 ruby-rspec-support all 3.13.0c0e0m0s1-2 [28.5 kB]
Get: 139 http://deb.debian.org/debian trixie/main i386 ruby-rspec-core all 3.13.0c0e0m0s1-2 [164 kB]
Get: 140 http://deb.debian.org/debian trixie/main i386 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB]
Get: 141 http://deb.debian.org/debian trixie/main i386 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB]
Get: 142 http://deb.debian.org/debian trixie/main i386 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B]
Get: 143 http://deb.debian.org/debian trixie/main i386 ruby-whitequark-parser all 3.3.4.2-2 [507 kB]
Fetched 57.0 MB in 17s (3426 kB/s)
Preconfiguring packages ...
Selecting previously unselected package libpython3.13-minimal:i386.
(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 ... 19829 files and directories currently installed.)
Preparing to unpack .../libpython3.13-minimal_3.13.1-3+b1_i386.deb ...
Unpacking libpython3.13-minimal:i386 (3.13.1-3+b1) ...
Selecting previously unselected package libexpat1:i386.
Preparing to unpack .../libexpat1_2.6.4-1_i386.deb ...
Unpacking libexpat1:i386 (2.6.4-1) ...
Selecting previously unselected package python3.13-minimal.
Preparing to unpack .../python3.13-minimal_3.13.1-3+b1_i386.deb ...
Unpacking python3.13-minimal (3.13.1-3+b1) ...
Setting up libpython3.13-minimal:i386 (3.13.1-3+b1) ...
Setting up libexpat1:i386 (2.6.4-1) ...
Setting up python3.13-minimal (3.13.1-3+b1) ...
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 ... 20165 files and directories currently installed.)
Preparing to unpack .../0-python3-minimal_3.13.1-2_i386.deb ...
Unpacking python3-minimal (3.13.1-2) ...
Selecting previously unselected package media-types.
Preparing to unpack .../1-media-types_10.1.0_all.deb ...
Unpacking media-types (10.1.0) ...
Selecting previously unselected package netbase.
Preparing to unpack .../2-netbase_6.4_all.deb ...
Unpacking netbase (6.4) ...
Selecting previously unselected package tzdata.
Preparing to unpack .../3-tzdata_2024b-6_all.deb ...
Unpacking tzdata (2024b-6) ...
Selecting previously unselected package libffi8:i386.
Preparing to unpack .../4-libffi8_3.4.6-1_i386.deb ...
Unpacking libffi8:i386 (3.4.6-1) ...
Selecting previously unselected package readline-common.
Preparing to unpack .../5-readline-common_8.2-6_all.deb ...
Unpacking readline-common (8.2-6) ...
Selecting previously unselected package libreadline8t64:i386.
Preparing to unpack .../6-libreadline8t64_8.2-6_i386.deb ...
Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8 to /lib/i386-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64'
Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8.2 to /lib/i386-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64'
Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8 to /lib/i386-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64'
Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8.2 to /lib/i386-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64'
Unpacking libreadline8t64:i386 (8.2-6) ...
Selecting previously unselected package libpython3.13-stdlib:i386.
Preparing to unpack .../7-libpython3.13-stdlib_3.13.1-3+b1_i386.deb ...
Unpacking libpython3.13-stdlib:i386 (3.13.1-3+b1) ...
Selecting previously unselected package python3.13.
Preparing to unpack .../8-python3.13_3.13.1-3+b1_i386.deb ...
Unpacking python3.13 (3.13.1-3+b1) ...
Selecting previously unselected package libpython3-stdlib:i386.
Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_i386.deb ...
Unpacking libpython3-stdlib:i386 (3.13.1-2) ...
Setting up python3-minimal (3.13.1-2) ...
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 ... 21176 files and directories currently installed.)
Preparing to unpack .../000-python3_3.13.1-2_i386.deb ...
Unpacking python3 (3.13.1-2) ...
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.4.0-2_i386.deb ...
Unpacking openssl (3.4.0-2) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../003-ca-certificates_20241223_all.deb ...
Unpacking ca-certificates (20241223) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../004-libmagic-mgc_1%3a5.45-3+b1_i386.deb ...
Unpacking libmagic-mgc (1:5.45-3+b1) ...
Selecting previously unselected package libmagic1t64:i386.
Preparing to unpack .../005-libmagic1t64_1%3a5.45-3+b1_i386.deb ...
Unpacking libmagic1t64:i386 (1:5.45-3+b1) ...
Selecting previously unselected package file.
Preparing to unpack .../006-file_1%3a5.45-3+b1_i386.deb ...
Unpacking file (1:5.45-3+b1) ...
Selecting previously unselected package gettext-base.
Preparing to unpack .../007-gettext-base_0.23.1-1_i386.deb ...
Unpacking gettext-base (0.23.1-1) ...
Selecting previously unselected package libuchardet0:i386.
Preparing to unpack .../008-libuchardet0_0.0.8-1+b2_i386.deb ...
Unpacking libuchardet0:i386 (0.0.8-1+b2) ...
Selecting previously unselected package groff-base.
Preparing to unpack .../009-groff-base_1.23.0-7_i386.deb ...
Unpacking groff-base (1.23.0-7) ...
Selecting previously unselected package bsdextrautils.
Preparing to unpack .../010-bsdextrautils_2.40.4-2_i386.deb ...
Unpacking bsdextrautils (2.40.4-2) ...
Selecting previously unselected package libpipeline1:i386.
Preparing to unpack .../011-libpipeline1_1.5.8-1_i386.deb ...
Unpacking libpipeline1:i386 (1.5.8-1) ...
Selecting previously unselected package man-db.
Preparing to unpack .../012-man-db_2.13.0-1_i386.deb ...
Unpacking man-db (2.13.0-1) ...
Selecting previously unselected package m4.
Preparing to unpack .../013-m4_1.4.19-5_i386.deb ...
Unpacking m4 (1.4.19-5) ...
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.23.1-1_all.deb ...
Unpacking autopoint (0.23.1-1) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../018-libdebhelper-perl_13.24.1_all.deb ...
Unpacking libdebhelper-perl (13.24.1) ...
Selecting previously unselected package libtool.
Preparing to unpack .../019-libtool_2.5.4-2_all.deb ...
Unpacking libtool (2.5.4-2) ...
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.1-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.14.1-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../023-dh-strip-nondeterminism_1.14.1-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.14.1-1) ...
Selecting previously unselected package libelf1t64:i386.
Preparing to unpack .../024-libelf1t64_0.192-4_i386.deb ...
Unpacking libelf1t64:i386 (0.192-4) ...
Selecting previously unselected package dwz.
Preparing to unpack .../025-dwz_0.15-1+b1_i386.deb ...
Unpacking dwz (0.15-1+b1) ...
Selecting previously unselected package libunistring5:i386.
Preparing to unpack .../026-libunistring5_1.3-1_i386.deb ...
Unpacking libunistring5:i386 (1.3-1) ...
Selecting previously unselected package libicu72:i386.
Preparing to unpack .../027-libicu72_72.1-6_i386.deb ...
Unpacking libicu72:i386 (72.1-6) ...
Selecting previously unselected package libxml2:i386.
Preparing to unpack .../028-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_i386.deb ...
Unpacking libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ...
Selecting previously unselected package gettext.
Preparing to unpack .../029-gettext_0.23.1-1_i386.deb ...
Unpacking gettext (0.23.1-1) ...
Selecting previously unselected package intltool-debian.
Preparing to unpack .../030-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 .../031-po-debconf_1.0.21+nmu1_all.deb ...
Unpacking po-debconf (1.0.21+nmu1) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../032-debhelper_13.24.1_all.deb ...
Unpacking debhelper (13.24.1) ...
Selecting previously unselected package libgpg-error0:i386.
Preparing to unpack .../033-libgpg-error0_1.51-3_i386.deb ...
Unpacking libgpg-error0:i386 (1.51-3) ...
Selecting previously unselected package libassuan9:i386.
Preparing to unpack .../034-libassuan9_3.0.1-2_i386.deb ...
Unpacking libassuan9:i386 (3.0.1-2) ...
Selecting previously unselected package libgcrypt20:i386.
Preparing to unpack .../035-libgcrypt20_1.11.0-7_i386.deb ...
Unpacking libgcrypt20:i386 (1.11.0-7) ...
Selecting previously unselected package gpgconf.
Preparing to unpack .../036-gpgconf_2.2.46-1+b1_i386.deb ...
Unpacking gpgconf (2.2.46-1+b1) ...
Selecting previously unselected package libidn2-0:i386.
Preparing to unpack .../037-libidn2-0_2.3.7-2+b1_i386.deb ...
Unpacking libidn2-0:i386 (2.3.7-2+b1) ...
Selecting previously unselected package libp11-kit0:i386.
Preparing to unpack .../038-libp11-kit0_0.25.5-3_i386.deb ...
Unpacking libp11-kit0:i386 (0.25.5-3) ...
Selecting previously unselected package libtasn1-6:i386.
Preparing to unpack .../039-libtasn1-6_4.19.0-3+b3_i386.deb ...
Unpacking libtasn1-6:i386 (4.19.0-3+b3) ...
Selecting previously unselected package libgnutls30t64:i386.
Preparing to unpack .../040-libgnutls30t64_3.8.8-2_i386.deb ...
Unpacking libgnutls30t64:i386 (3.8.8-2) ...
Selecting previously unselected package libksba8:i386.
Preparing to unpack .../041-libksba8_1.6.7-2+b1_i386.deb ...
Unpacking libksba8:i386 (1.6.7-2+b1) ...
Selecting previously unselected package libsasl2-modules-db:i386.
Preparing to unpack .../042-libsasl2-modules-db_2.1.28+dfsg1-8+b1_i386.deb ...
Unpacking libsasl2-modules-db:i386 (2.1.28+dfsg1-8+b1) ...
Selecting previously unselected package libsasl2-2:i386.
Preparing to unpack .../043-libsasl2-2_2.1.28+dfsg1-8+b1_i386.deb ...
Unpacking libsasl2-2:i386 (2.1.28+dfsg1-8+b1) ...
Selecting previously unselected package libldap2:i386.
Preparing to unpack .../044-libldap2_2.6.9+dfsg-1_i386.deb ...
Unpacking libldap2:i386 (2.6.9+dfsg-1) ...
Selecting previously unselected package libnpth0t64:i386.
Preparing to unpack .../045-libnpth0t64_1.8-2_i386.deb ...
Unpacking libnpth0t64:i386 (1.8-2) ...
Selecting previously unselected package dirmngr.
Preparing to unpack .../046-dirmngr_2.2.46-1+b1_i386.deb ...
Unpacking dirmngr (2.2.46-1+b1) ...
Selecting previously unselected package gnupg-l10n.
Preparing to unpack .../047-gnupg-l10n_2.2.46-1_all.deb ...
Unpacking gnupg-l10n (2.2.46-1) ...
Selecting previously unselected package gpg.
Preparing to unpack .../048-gpg_2.2.46-1+b1_i386.deb ...
Unpacking gpg (2.2.46-1+b1) ...
Selecting previously unselected package pinentry-curses.
Preparing to unpack .../049-pinentry-curses_1.3.1-2_i386.deb ...
Unpacking pinentry-curses (1.3.1-2) ...
Selecting previously unselected package gpg-agent.
Preparing to unpack .../050-gpg-agent_2.2.46-1+b1_i386.deb ...
Unpacking gpg-agent (2.2.46-1+b1) ...
Selecting previously unselected package gpgsm.
Preparing to unpack .../051-gpgsm_2.2.46-1+b1_i386.deb ...
Unpacking gpgsm (2.2.46-1+b1) ...
Selecting previously unselected package gnupg.
Preparing to unpack .../052-gnupg_2.2.46-1_all.deb ...
Unpacking gnupg (2.2.46-1) ...
Selecting previously unselected package gpgv.
Preparing to unpack .../053-gpgv_2.2.46-1+b1_i386.deb ...
Unpacking gpgv (2.2.46-1+b1) ...
Selecting previously unselected package sopv-gpgv.
Preparing to unpack .../054-sopv-gpgv_0.1.1-1_all.deb ...
Unpacking sopv-gpgv (0.1.1-1) ...
Selecting previously unselected package libfile-dirlist-perl.
Preparing to unpack .../055-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 .../056-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 .../057-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 .../058-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 .../059-libio-pty-perl_1%3a1.20-1+b3_i386.deb ...
Unpacking libio-pty-perl (1:1.20-1+b3) ...
Selecting previously unselected package libipc-run-perl.
Preparing to unpack .../060-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 .../061-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 .../062-libclass-xsaccessor-perl_1.19-4+b4_i386.deb ...
Unpacking libclass-xsaccessor-perl (1.19-4+b4) ...
Selecting previously unselected package libb-hooks-op-check-perl:i386.
Preparing to unpack .../063-libb-hooks-op-check-perl_0.22-3+b2_i386.deb ...
Unpacking libb-hooks-op-check-perl:i386 (0.22-3+b2) ...
Selecting previously unselected package libdynaloader-functions-perl.
Preparing to unpack .../064-libdynaloader-functions-perl_0.004-1_all.deb ...
Unpacking libdynaloader-functions-perl (0.004-1) ...
Selecting previously unselected package libdevel-callchecker-perl:i386.
Preparing to unpack .../065-libdevel-callchecker-perl_0.009-1+b1_i386.deb ...
Unpacking libdevel-callchecker-perl:i386 (0.009-1+b1) ...
Selecting previously unselected package libparams-classify-perl:i386.
Preparing to unpack .../066-libparams-classify-perl_0.015-2+b4_i386.deb ...
Unpacking libparams-classify-perl:i386 (0.015-2+b4) ...
Selecting previously unselected package libmodule-runtime-perl.
Preparing to unpack .../067-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 .../068-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 .../069-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 .../070-libsub-quote-perl_2.006008-1_all.deb ...
Unpacking libsub-quote-perl (2.006008-1) ...
Selecting previously unselected package libmoo-perl.
Preparing to unpack .../071-libmoo-perl_2.005005-1_all.deb ...
Unpacking libmoo-perl (2.005005-1) ...
Selecting previously unselected package libencode-locale-perl.
Preparing to unpack .../072-libencode-locale-perl_1.05-3_all.deb ...
Unpacking libencode-locale-perl (1.05-3) ...
Selecting previously unselected package libtimedate-perl.
Preparing to unpack .../073-libtimedate-perl_2.3300-2_all.deb ...
Unpacking libtimedate-perl (2.3300-2) ...
Selecting previously unselected package libhttp-date-perl.
Preparing to unpack .../074-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 .../075-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 .../076-libhtml-tagset-perl_3.24-1_all.deb ...
Unpacking libhtml-tagset-perl (3.24-1) ...
Selecting previously unselected package liburi-perl.
Preparing to unpack .../077-liburi-perl_5.30-1_all.deb ...
Unpacking liburi-perl (5.30-1) ...
Selecting previously unselected package libhtml-parser-perl:i386.
Preparing to unpack .../078-libhtml-parser-perl_3.83-1+b2_i386.deb ...
Unpacking libhtml-parser-perl:i386 (3.83-1+b2) ...
Selecting previously unselected package libhtml-tree-perl.
Preparing to unpack .../079-libhtml-tree-perl_5.07-3_all.deb ...
Unpacking libhtml-tree-perl (5.07-3) ...
Selecting previously unselected package libclone-perl:i386.
Preparing to unpack .../080-libclone-perl_0.47-1+b1_i386.deb ...
Unpacking libclone-perl:i386 (0.47-1+b1) ...
Selecting previously unselected package libio-html-perl.
Preparing to unpack .../081-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 .../082-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 .../083-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 .../084-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 .../085-libhttp-negotiate-perl_6.01-2_all.deb ...
Unpacking libhttp-negotiate-perl (6.01-2) ...
Selecting previously unselected package perl-openssl-defaults:i386.
Preparing to unpack .../086-perl-openssl-defaults_7+b2_i386.deb ...
Unpacking perl-openssl-defaults:i386 (7+b2) ...
Selecting previously unselected package libnet-ssleay-perl:i386.
Preparing to unpack .../087-libnet-ssleay-perl_1.94-2_i386.deb ...
Unpacking libnet-ssleay-perl:i386 (1.94-2) ...
Selecting previously unselected package libio-socket-ssl-perl.
Preparing to unpack .../088-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 .../089-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 .../090-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 .../091-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 .../092-libwww-robotrules-perl_6.02-1_all.deb ...
Unpacking libwww-robotrules-perl (6.02-1) ...
Selecting previously unselected package libwww-perl.
Preparing to unpack .../093-libwww-perl_6.77-1_all.deb ...
Unpacking libwww-perl (6.77-1) ...
Selecting previously unselected package patchutils.
Preparing to unpack .../094-patchutils_0.4.2-1_i386.deb ...
Unpacking patchutils (0.4.2-1) ...
Selecting previously unselected package wdiff.
Preparing to unpack .../095-wdiff_1.2.2-7_i386.deb ...
Unpacking wdiff (1.2.2-7) ...
Selecting previously unselected package devscripts.
Preparing to unpack .../096-devscripts_2.25.1_all.deb ...
Unpacking devscripts (2.25.1) ...
Selecting previously unselected package rubygems-integration.
Preparing to unpack .../097-rubygems-integration_1.19_all.deb ...
Unpacking rubygems-integration (1.19) ...
Selecting previously unselected package ruby-net-telnet.
Preparing to unpack .../098-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 .../099-ruby-webrick_1.8.1-1_all.deb ...
Unpacking ruby-webrick (1.8.1-1) ...
Selecting previously unselected package ruby-xmlrpc.
Preparing to unpack .../100-ruby-xmlrpc_0.3.3-2_all.deb ...
Unpacking ruby-xmlrpc (0.3.3-2) ...
Selecting previously unselected package libyaml-0-2:i386.
Preparing to unpack .../101-libyaml-0-2_0.2.5-2_i386.deb ...
Unpacking libyaml-0-2:i386 (0.2.5-2) ...
Selecting previously unselected package libruby3.3:i386.
Preparing to unpack .../102-libruby3.3_3.3.7-1_i386.deb ...
Unpacking libruby3.3:i386 (3.3.7-1) ...
Selecting previously unselected package libruby:i386.
Preparing to unpack .../103-libruby_1%3a3.1+support3.3_i386.deb ...
Unpacking libruby:i386 (1:3.1+support3.3) ...
Selecting previously unselected package ruby-sdbm:i386.
Preparing to unpack .../104-ruby-sdbm_1.0.0-5+b6_i386.deb ...
Unpacking ruby-sdbm:i386 (1.0.0-5+b6) ...
Selecting previously unselected package libedit2:i386.
Preparing to unpack .../105-libedit2_3.1-20250104-1_i386.deb ...
Unpacking libedit2:i386 (3.1-20250104-1) ...
Selecting previously unselected package libncurses6:i386.
Preparing to unpack .../106-libncurses6_6.5-2+b1_i386.deb ...
Unpacking libncurses6:i386 (6.5-2+b1) ...
Selecting previously unselected package libruby3.1t64:i386.
Preparing to unpack .../107-libruby3.1t64_3.1.2-8.5_i386.deb ...
Unpacking libruby3.1t64:i386 (3.1.2-8.5) ...
Selecting previously unselected package ruby3.1.
Preparing to unpack .../108-ruby3.1_3.1.2-8.5_i386.deb ...
Unpacking ruby3.1 (3.1.2-8.5) ...
Selecting previously unselected package ruby-rubygems.
Preparing to unpack .../109-ruby-rubygems_3.6.3-1_all.deb ...
Unpacking ruby-rubygems (3.6.3-1) ...
Selecting previously unselected package ruby.
Preparing to unpack .../110-ruby_1%3a3.1+support3.3_i386.deb ...
Unpacking ruby (1:3.1+support3.3) ...
Selecting previously unselected package rake.
Preparing to unpack .../111-rake_13.2.1-1_all.deb ...
Unpacking rake (13.2.1-1) ...
Selecting previously unselected package gem2deb-test-runner.
Preparing to unpack .../112-gem2deb-test-runner_2.2.5_i386.deb ...
Unpacking gem2deb-test-runner (2.2.5) ...
Selecting previously unselected package libgmpxx4ldbl:i386.
Preparing to unpack .../113-libgmpxx4ldbl_2%3a6.3.0+dfsg-3_i386.deb ...
Unpacking libgmpxx4ldbl:i386 (2:6.3.0+dfsg-3) ...
Selecting previously unselected package libgmp-dev:i386.
Preparing to unpack .../114-libgmp-dev_2%3a6.3.0+dfsg-3_i386.deb ...
Unpacking libgmp-dev:i386 (2:6.3.0+dfsg-3) ...
Selecting previously unselected package ruby3.1-dev:i386.
Preparing to unpack .../115-ruby3.1-dev_3.1.2-8.5_i386.deb ...
Unpacking ruby3.1-dev:i386 (3.1.2-8.5) ...
Selecting previously unselected package ruby3.3.
Preparing to unpack .../116-ruby3.3_3.3.7-1_i386.deb ...
Unpacking ruby3.3 (3.3.7-1) ...
Selecting previously unselected package ruby3.3-dev:i386.
Preparing to unpack .../117-ruby3.3-dev_3.3.7-1_i386.deb ...
Unpacking ruby3.3-dev:i386 (3.3.7-1) ...
Selecting previously unselected package ruby-all-dev:i386.
Preparing to unpack .../118-ruby-all-dev_1%3a3.1+support3.3_i386.deb ...
Unpacking ruby-all-dev:i386 (1:3.1+support3.3) ...
Selecting previously unselected package gem2deb.
Preparing to unpack .../119-gem2deb_2.2.5_i386.deb ...
Unpacking gem2deb (2.2.5) ...
Selecting previously unselected package racc.
Preparing to unpack .../120-racc_1.8.1-1_all.deb ...
Unpacking racc (1.8.1-1) ...
Selecting previously unselected package ruby-ast.
Preparing to unpack .../121-ruby-ast_2.4.2-1_all.deb ...
Unpacking ruby-ast (2.4.2-1) ...
Selecting previously unselected package ruby-diff-lcs.
Preparing to unpack .../122-ruby-diff-lcs_1.5.1-1_all.deb ...
Unpacking ruby-diff-lcs (1.5.1-1) ...
Selecting previously unselected package ruby-oedipus-lex.
Preparing to unpack .../123-ruby-oedipus-lex_2.6.0-2_all.deb ...
Unpacking ruby-oedipus-lex (2.6.0-2) ...
Selecting previously unselected package ruby-rspec-support.
Preparing to unpack .../124-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 .../125-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 .../126-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 .../127-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 .../128-ruby-rspec_3.13.0c0e0m0s1-2_all.deb ...
Unpacking ruby-rspec (3.13.0c0e0m0s1-2) ...
Selecting previously unselected package ruby-whitequark-parser.
Preparing to unpack .../129-ruby-whitequark-parser_3.3.4.2-2_all.deb ...
Unpacking ruby-whitequark-parser (3.3.4.2-2) ...
Setting up media-types (10.1.0) ...
Setting up libpipeline1:i386 (1.5.8-1) ...
Setting up wdiff (1.2.2-7) ...
Setting up libfile-which-perl (1.27-2) ...
Setting up libnpth0t64:i386 (1.8-2) ...
Setting up libicu72:i386 (72.1-6) ...
Setting up ruby-oedipus-lex (2.6.0-2) ...
Setting up bsdextrautils (2.40.4-2) ...
Setting up libgpg-error0:i386 (1.51-3) ...
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+b3) ...
Setting up libmagic-mgc (1:5.45-3+b1) ...
Setting up libclone-perl:i386 (0.47-1+b1) ...
Setting up libarchive-zip-perl (1.68-1) ...
Setting up libyaml-0-2:i386 (0.2.5-2) ...
Setting up libhtml-tagset-perl (3.24-1) ...
Setting up libdebhelper-perl (13.24.1) ...
Setting up libedit2:i386 (3.1-20250104-1) ...
Setting up liblwp-mediatypes-perl (6.04-2) ...
Setting up libmagic1t64:i386 (1:5.45-3+b1) ...
Setting up libtry-tiny-perl (0.32-1) ...
Setting up perl-openssl-defaults:i386 (7+b2) ...
Setting up gettext-base (0.23.1-1) ...
Setting up m4 (1.4.19-5) ...
Setting up libgcrypt20:i386 (1.11.0-7) ...
Setting up libencode-locale-perl (1.05-3) ...
Setting up file (1:5.45-3+b1) ...
Setting up libelf1t64:i386 (0.192-4) ...
Setting up libsasl2-modules-db:i386 (2.1.28+dfsg1-8+b1) ...
Setting up tzdata (2024b-6) ...

Current default time zone: 'Etc/UTC'
Local time is now:      Wed Mar 11 07:11:49 UTC 2026.
Universal Time is now:  Wed Mar 11 07:11:49 UTC 2026.
Run 'dpkg-reconfigure tzdata' if you wish to change it.

Setting up autotools-dev (20220109.1) ...
Setting up libgmpxx4ldbl:i386 (2:6.3.0+dfsg-3) ...
Setting up gnupg-l10n (2.2.46-1) ...
Setting up ruby-ast (2.4.2-1) ...
Setting up libncurses6:i386 (6.5-2+b1) ...
Setting up ruby-net-telnet (0.2.0-1) ...
Setting up libunistring5:i386 (1.3-1) ...
Setting up libio-html-perl (1.004-3) ...
Setting up autopoint (0.23.1-1) ...
Setting up libb-hooks-op-check-perl:i386 (0.22-3+b2) ...
Setting up libipc-run-perl (20231003.0-2) ...
Setting up libsasl2-2:i386 (2.1.28+dfsg1-8+b1) ...
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 libffi8:i386 (3.4.6-1) ...
Setting up dwz (0.15-1+b1) ...
Setting up sensible-utils (0.0.24) ...
Setting up gpgv (2.2.46-1+b1) ...
Setting up libuchardet0:i386 (0.0.8-1+b2) ...
Setting up libassuan9:i386 (3.0.1-2) ...
Setting up librole-tiny-perl (2.002004-1) ...
Setting up libtasn1-6:i386 (4.19.0-3+b3) ...
Setting up netbase (6.4) ...
Setting up libsub-quote-perl (2.006008-1) ...
Setting up libclass-xsaccessor-perl (1.19-4+b4) ...
Setting up libfile-dirlist-perl (0.05-3) ...
Setting up libfile-homedir-perl (1.006-2) ...
Setting up openssl (3.4.0-2) ...
Setting up readline-common (8.2-6) ...
Setting up ruby-xmlrpc (0.3.3-2) ...
Setting up libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ...
Setting up libldap2:i386 (2.6.9+dfsg-1) ...
Setting up liburi-perl (5.30-1) ...
Setting up libfile-touch-perl (0.12-2) ...
Setting up libnet-ssleay-perl:i386 (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 libksba8:i386 (1.6.7-2+b1) ...
Setting up pinentry-curses (1.3.1-2) ...
Setting up libfile-stripnondeterminism-perl (1.14.1-1) ...
Setting up libhttp-date-perl (6.06-1) ...
Setting up gettext (0.23.1-1) ...
Setting up libgmp-dev:i386 (2:6.3.0+dfsg-3) ...
Setting up libfile-listing-perl (6.16-1) ...
Setting up libtool (2.5.4-2) ...
Setting up libnet-http-perl (6.23-1) ...
Setting up libidn2-0:i386 (2.3.7-2+b1) ...
Setting up libdevel-callchecker-perl:i386 (0.009-1+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 (20241223) ...
Updating certificates in /etc/ssl/certs...
152 added, 0 removed; done.
Setting up libp11-kit0:i386 (0.25.5-3) ...
Setting up libreadline8t64:i386 (8.2-6) ...
Setting up dh-strip-nondeterminism (1.14.1-1) ...
Setting up libwww-robotrules-perl (6.02-1) ...
Setting up groff-base (1.23.0-7) ...
Setting up libhtml-parser-perl:i386 (3.83-1+b2) ...
Setting up gpgconf (2.2.46-1+b1) ...
Setting up libpython3.13-stdlib:i386 (3.13.1-3+b1) ...
Setting up libio-socket-ssl-perl (2.089-1) ...
Setting up gpg (2.2.46-1+b1) ...
Setting up libpython3-stdlib:i386 (3.13.1-2) ...
Setting up libhttp-message-perl (7.00-2) ...
Setting up libgnutls30t64:i386 (3.8.8-2) ...
Setting up libhttp-negotiate-perl (6.01-2) ...
Setting up gpg-agent (2.2.46-1+b1) ...
Setting up libhttp-cookies-perl (6.11-1) ...
Setting up python3.13 (3.13.1-3+b1) ...
Setting up po-debconf (1.0.21+nmu1) ...
Setting up libhtml-tree-perl (5.07-3) ...
Setting up libparams-classify-perl:i386 (0.015-2+b4) ...
Setting up gpgsm (2.2.46-1+b1) ...
Setting up python3 (3.13.1-2) ...
Setting up rubygems-integration (1.19) ...
Setting up sopv-gpgv (0.1.1-1) ...
update-alternatives: using /usr/bin/sopv-gpgv to provide /usr/bin/sopv (sopv) in auto mode
Setting up man-db (2.13.0-1) ...
Not building database; man-db/auto-update is not 'true'.
Setting up dirmngr (2.2.46-1+b1) ...
Setting up libmodule-runtime-perl (0.016-2) ...
Setting up gnupg (2.2.46-1) ...
Setting up libimport-into-perl (1.002005-2) ...
Setting up libmoo-perl (2.005005-1) ...
Setting up debhelper (13.24.1) ...
Setting up rake (13.2.1-1) ...
Setting up liblwp-protocol-https-perl (6.14-1) ...
Setting up libruby:i386 (1:3.1+support3.3) ...
Setting up libwww-perl (6.77-1) ...
Setting up libruby3.3:i386 (3.3.7-1) ...
Setting up ruby-rubygems (3.6.3-1) ...
Setting up ruby (1:3.1+support3.3) ...
Setting up racc (1.8.1-1) ...
Setting up devscripts (2.25.1) ...
Setting up ruby-rspec-core (3.13.0c0e0m0s1-2) ...
Setting up ruby3.3-dev:i386 (3.3.7-1) ...
Setting up ruby3.3 (3.3.7-1) ...
Setting up ruby-sdbm:i386 (1.0.0-5+b6) ...
Setting up ruby-diff-lcs (1.5.1-1) ...
Setting up ruby-whitequark-parser (3.3.4.2-2) ...
Setting up libruby3.1t64:i386 (3.1.2-8.5) ...
Setting up ruby-rspec-expectations (3.13.0c0e0m0s1-2) ...
Setting up ruby-rspec-mocks (3.13.0c0e0m0s1-2) ...
Setting up ruby3.1 (3.1.2-8.5) ...
Setting up ruby3.1-dev:i386 (3.1.2-8.5) ...
Setting up ruby-rspec (3.13.0c0e0m0s1-2) ...
Setting up gem2deb-test-runner (2.2.5) ...
Setting up ruby-all-dev:i386 (1:3.1+support3.3) ...
Setting up gem2deb (2.2.5) ...
Processing triggers for libc-bin (2.40-6) ...
Processing triggers for ca-certificates (20241223) ...
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-rubocop-ast-1.24.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-rubocop-ast_1.24.0-2_source.changes
dpkg-buildpackage: info: source package ruby-rubocop-ast
dpkg-buildpackage: info: source version 1.24.0-2
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by Lucas Kanashiro <kanashiro@debian.org>
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture i386
 debian/rules clean
dh clean --buildsystem=ruby --with ruby
   dh_auto_clean -O--buildsystem=ruby
	dh_ruby --clean
W: XS-Ruby-Versions is deprecated, and will be ignored
   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
   debian/rules override_dh_auto_build
make[1]: Entering directory '/build/reproducible-path/ruby-rubocop-ast-1.24.0'
rake -f tasks/compile.rake generate
Generating lib/rubocop/ast/node_pattern/lexer.rex.rb from lib/rubocop/ast/node_pattern/lexer.rex
racc -l -v -o lib/rubocop/ast/node_pattern/parser.racc.rb lib/rubocop/ast/node_pattern/parser.y
dh_auto_build
	dh_ruby --build
make[1]: Leaving directory '/build/reproducible-path/ruby-rubocop-ast-1.24.0'
   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-rubocop-ast/ -O--buildsystem=ruby
	dh_ruby --install /build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast

┌──────────────────────────────────────────────────────────────────────────────┐
│ ruby-rubocop-ast: Installing files and building extensions for ruby3.1       │
└──────────────────────────────────────────────────────────────────────────────┘

/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20260310-63455-6dhtfb/gemspec
WARNING:  open-ended dependency on parser (>= 3.1.1.0) is not recommended
  if parser is semantically versioned, use:
    add_runtime_dependency "parser", "~> 3.1", ">= 3.1.1.0"
WARNING:  See https://guides.rubygems.org/specification-reference/ for help
  Successfully built RubyGem
  Name: rubocop-ast
  Version: 1.24.0
  File: rubocop-ast-1.24.0.gem
/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-rubocop-ast/usr/share/rubygems-integration/all /tmp/d20260310-63455-6dhtfb/rubocop-ast-1.24.0.gem
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop-ast.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/builder.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/ext/range.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/ext/range_min_max.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/alias_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/and_asgn_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/and_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/arg_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/args_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/array_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/asgn_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/block_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/break_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/case_match_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/case_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/casgn_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/class_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/const_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/def_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/defined_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/dstr_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/ensure_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/float_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/for_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/forward_args_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/hash_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/if_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/in_pattern_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/index_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/indexasgn_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/int_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/keyword_splat_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/lambda_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/basic_literal_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/binary_operator_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/collection_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/conditional_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/descendence.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/hash_element_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/modifier_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/numeric_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/parameterized_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/mixin/predicate_operator_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/module_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/next_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/op_asgn_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/or_asgn_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/or_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/pair_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/procarg0_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/range_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/regexp_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/resbody_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/rescue_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/return_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/self_class_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/send_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/str_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/super_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/symbol_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/until_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/when_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/while_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node/yield_node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/builder.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/comment.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/compiler.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/compiler/binding.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/compiler/debug.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/compiler/node_pattern_subcompiler.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/compiler/sequence_subcompiler.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/compiler/subcompiler.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/lexer.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/lexer.rex.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/method_definer.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/node.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/parser.racc.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/parser.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/sets.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/node_pattern/with_meta.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/processed_source.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/rubocop_compatibility.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/sexp.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/token.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/traversal.rb
/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all/gems/rubocop-ast-1.24.0/lib/rubocop/ast/version.rb
Successfully installed rubocop-ast-1.24.0
1 gem installed
cd debian/ruby-rubocop-ast/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/rubocop-ast-1.24.0
rm -f 
chmod 644 lib/rubocop/ast/builder.rb lib/rubocop/ast/ext/range.rb lib/rubocop/ast/ext/range_min_max.rb lib/rubocop/ast/node/alias_node.rb lib/rubocop/ast/node/and_asgn_node.rb lib/rubocop/ast/node/and_node.rb lib/rubocop/ast/node/arg_node.rb lib/rubocop/ast/node/args_node.rb lib/rubocop/ast/node/array_node.rb lib/rubocop/ast/node/asgn_node.rb lib/rubocop/ast/node/block_node.rb lib/rubocop/ast/node/break_node.rb lib/rubocop/ast/node/case_match_node.rb lib/rubocop/ast/node/case_node.rb lib/rubocop/ast/node/casgn_node.rb lib/rubocop/ast/node/class_node.rb lib/rubocop/ast/node/const_node.rb lib/rubocop/ast/node/def_node.rb lib/rubocop/ast/node/defined_node.rb lib/rubocop/ast/node/dstr_node.rb lib/rubocop/ast/node/ensure_node.rb lib/rubocop/ast/node/float_node.rb lib/rubocop/ast/node/for_node.rb lib/rubocop/ast/node/forward_args_node.rb lib/rubocop/ast/node/hash_node.rb lib/rubocop/ast/node/if_node.rb lib/rubocop/ast/node/in_pattern_node.rb lib/rubocop/ast/node/index_node.rb lib/rubocop/ast/node/indexasgn_node.rb lib/rubocop/ast/node/int_node.rb lib/rubocop/ast/node/keyword_splat_node.rb lib/rubocop/ast/node/lambda_node.rb lib/rubocop/ast/node/mixin/basic_literal_node.rb lib/rubocop/ast/node/mixin/binary_operator_node.rb lib/rubocop/ast/node/mixin/collection_node.rb lib/rubocop/ast/node/mixin/conditional_node.rb lib/rubocop/ast/node/mixin/descendence.rb lib/rubocop/ast/node/mixin/hash_element_node.rb lib/rubocop/ast/node/mixin/method_dispatch_node.rb lib/rubocop/ast/node/mixin/method_identifier_predicates.rb lib/rubocop/ast/node/mixin/modifier_node.rb lib/rubocop/ast/node/mixin/numeric_node.rb lib/rubocop/ast/node/mixin/parameterized_node.rb lib/rubocop/ast/node/mixin/predicate_operator_node.rb lib/rubocop/ast/node/module_node.rb lib/rubocop/ast/node/next_node.rb lib/rubocop/ast/node/op_asgn_node.rb lib/rubocop/ast/node/or_asgn_node.rb lib/rubocop/ast/node/or_node.rb lib/rubocop/ast/node/pair_node.rb lib/rubocop/ast/node/procarg0_node.rb lib/rubocop/ast/node/range_node.rb lib/rubocop/ast/node/regexp_node.rb lib/rubocop/ast/node/resbody_node.rb lib/rubocop/ast/node/rescue_node.rb lib/rubocop/ast/node/return_node.rb lib/rubocop/ast/node/self_class_node.rb lib/rubocop/ast/node/send_node.rb lib/rubocop/ast/node/str_node.rb lib/rubocop/ast/node/super_node.rb lib/rubocop/ast/node/symbol_node.rb lib/rubocop/ast/node/until_node.rb lib/rubocop/ast/node/when_node.rb lib/rubocop/ast/node/while_node.rb lib/rubocop/ast/node/yield_node.rb lib/rubocop/ast/node.rb lib/rubocop/ast/node_pattern/builder.rb lib/rubocop/ast/node_pattern/comment.rb lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb lib/rubocop/ast/node_pattern/compiler/binding.rb lib/rubocop/ast/node_pattern/compiler/debug.rb lib/rubocop/ast/node_pattern/compiler/node_pattern_subcompiler.rb lib/rubocop/ast/node_pattern/compiler/sequence_subcompiler.rb lib/rubocop/ast/node_pattern/compiler/subcompiler.rb lib/rubocop/ast/node_pattern/compiler.rb lib/rubocop/ast/node_pattern/lexer.rb lib/rubocop/ast/node_pattern/lexer.rex.rb lib/rubocop/ast/node_pattern/method_definer.rb lib/rubocop/ast/node_pattern/node.rb lib/rubocop/ast/node_pattern/parser.racc.rb lib/rubocop/ast/node_pattern/parser.rb lib/rubocop/ast/node_pattern/sets.rb lib/rubocop/ast/node_pattern/with_meta.rb lib/rubocop/ast/node_pattern.rb lib/rubocop/ast/processed_source.rb lib/rubocop/ast/rubocop_compatibility.rb lib/rubocop/ast/sexp.rb lib/rubocop/ast/token.rb lib/rubocop/ast/traversal.rb lib/rubocop/ast/version.rb lib/rubocop/ast.rb lib/rubocop-ast.rb
find lib/ -type d -empty -delete
cd -
cd -
dh_installchangelogs -pruby-rubocop-ast /build/reproducible-path/ruby-rubocop-ast-1.24.0/CHANGELOG.md upstream
/usr/bin/ruby3.1 /usr/bin/gem2deb-test-runner

┌──────────────────────────────────────────────────────────────────────────────┐
│ Checking Rubygems dependency resolution on ruby3.1                           │
└──────────────────────────────────────────────────────────────────────────────┘

RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-rubocop-ast-1.24.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/i386-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/i386-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -e gem\ \"rubocop-ast\"

┌──────────────────────────────────────────────────────────────────────────────┐
│ Run tests for ruby3.1 from debian/ruby-tests.rake                            │
└──────────────────────────────────────────────────────────────────────────────┘

RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-rubocop-ast-1.24.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/i386-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/i386-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake
/usr/bin/ruby3.1 -ruri -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
warning: parser/current is loading parser/ruby31, which recognizes 3.1.6-compliant syntax, but you are running 3.1.2.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.

Randomized with seed 36516

RuboCop::AST::AndNode
  #alternate_operator
    with a logical and node
      is expected to eq "and"
    with a semantic and node
      is expected to eq "&&"
  #inverse_operator
    with a semantic and node
      is expected to eq "or"
    with a logical and node
      is expected to eq "||"
  #logical_operator?
    with a semantic and node
      is expected not to be logical operator
    with a logical and node
      is expected to be logical operator
  #operator
    with a logical and node
      is expected to eq "&&"
    with a semantic and node
      is expected to eq "and"
  #lhs
    with a semantic and node
      is expected to be sym type
    with a logical and node
      is expected to be sym type
  #rhs
    with a semantic and node
      is expected to be int type
    with a logical and node
      is expected to be int type
  #semantic_operator?
    with a semantic and node
      is expected to be semantic operator
    with a logical and node
      is expected not to be semantic operator
  .new
    with a logical and node
      is expected to be a kind of RuboCop::AST::AndNode
    with a semantic and node
      is expected to be a kind of RuboCop::AST::AndNode

RuboCop::AST::UntilNode
  #do?
    with a do keyword
      is expected to be do
    without a do keyword
      is expected not to be do
  #loop_keyword?
    with a modifier until
      is expected to be loop keyword
    with a statement until
      is expected to be loop keyword
  #post_condition_loop?
    with a statement until
      is expected not to be post condition loop
    with a modifier until
      is expected to be post condition loop
  .new
    with a modifier until
      is expected to be a kind of RuboCop::AST::UntilNode
    with a statement until
      is expected to be a kind of RuboCop::AST::UntilNode
  #inverse_keyword
    is expected to eq "while"
  #keyword
    is expected to eq "until"

RuboCop::AST::OpAsgnNode
  #assignment_node
    is expected to be a kind of RuboCop::AST::AsgnNode
  #expression
    is expected to eq s(:send, nil, :value)
  #name
    is expected to eq :var
  .new
    with an `op_asgn_node` node
      is expected to be a kind of RuboCop::AST::OpAsgnNode
  #operator
    with **=
      is expected to eq :**
    with %=
      is expected to eq :%
    with /=
      is expected to eq :/
    with *=
      is expected to eq :*
    with &=
      is expected to eq :&
    with |=
      is expected to eq :|
    with +=
      is expected to eq :+
    with -=
      is expected to eq :-

RuboCop::AST::SelfClassNode
  #body
    with a multi-expression body
      is expected to be begin type
    with a single expression body
      is expected to be send type
    with an empty body
      is expected to be nil
  .new
    is expected to be a kind of RuboCop::AST::SelfClassNode
  #identifier
    is expected to be self type

RuboCop::AST::PairNode
  #delimiter
    when using a colon delimiter
      is expected to eq ": "
      is expected to eq ":"
    when using a hash rocket delimiter
      is expected to eq " => "
      is expected to eq "=>"
  #hash_rocket?
    when using a colon delimiter
      is expected not to be hash rocket
    when using a hash rocket delimiter
      is expected to be hash rocket
  .new
    is expected to be a kind of RuboCop::AST::PairNode
  #value_omission?
    when using hash value omission
      is expected to be value omission
    when not using hash value omission
      is expected not to be value omission
  #inverse_delimiter
    when using a hash rocket delimiter
      is expected to eq ": "
      is expected to eq ":"
    when using a colon delimiter
      is expected to eq " => "
      is expected to eq "=>"
  #value
    is expected to be int type
  #colon?
    when using a colon delimiter
      is expected to be colon
    when using a hash rocket delimiter
      is expected not to be colon
  #key_delta
    with alignment set to :right
      when using hash rocket delimiters
        when receiver key is ahead
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 2
        when both keys are on the same line
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
        when keys are aligned
          when second key is a keyword splat
            is expected to eq 0
          when both keys are explicit keys
            is expected to eq 0
        when receiver key is behind
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq -2
      when using colon delimiters
        when receiver key is ahead
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 2
        when keys are aligned
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
        when both keys are on the same line
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
        when receiver key is behind
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are reail pairs
            is expected to eq -2
    with alignment set to :left
      when using colon delimiters
        when receiver key is ahead
          when both pairs are explicit pairs
            is expected to eq 2
          when second pair is a keyword splat
            is expected to eq 2
        when keys are aligned
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
        when receiver key is behind
          when second pair is a keyword splat
            is expected to eq -2
          when both pairs are reail pairs
            is expected to eq -2
        when both keys are on the same line
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
      when using hash rocket delimiters
        when receiver key is ahead
          when second pair is a keyword splat
            is expected to eq 2
          when both pairs are explicit pairs
            is expected to eq 2
        when both keys are on the same line
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
        when receiver key is behind
          when both pairs are explicit pairs
            is expected to eq -2
          when second pair is a keyword splat
            is expected to eq -2
        when keys are aligned
          when both keys are explicit keys
            is expected to eq 0
          when second key is a keyword splat
            is expected to eq 0
  #same_line?
    when both pairs are on the same line
      when both pairs are explicit pairs
        is expected to be same line s(:pair,
  s(:sym, :b),
  s(:int, 2))
      when both pair is a keyword splat
        is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
    when a multiline pair shares the same line
      when last pair is a keyword splat
        is expected to be same line s(:pair,
  s(:sym, :a),
  s(:begin))
        is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
      when both pairs are explicit pairs
        is expected to be same line s(:pair,
  s(:sym, :b),
  s(:int, 2))
        is expected to be same line s(:pair,
  s(:sym, :a),
  s(:begin))
    when pairs are on separate lines
      when last pair is a keyword splat
        is expected not to be same line s(:kwsplat,
  s(:send, nil, :foo))
      when both pairs are explicit pairs
        is expected not to be same line s(:pair,
  s(:sym, :b),
  s(:int, 2))
  #key
    when using a symbol key
      is expected to be sym type
    when using a string key
      is expected to be str type
  #value_delta
    when using colon delimiters
      when receiver value is behind
        is expected to eq -2
      when values are aligned
        when second pair is a keyword splat
          is expected to eq 0
        when both pairs are explicit pairs
          is expected to eq 0
      when receiver value is ahead
        is expected to eq 2
      when both pairs are on the same line
        is expected to eq 0
    when using hash rocket delimiters
      when both pairs are on the same line
        is expected to eq 0
      when receiver value is ahead
        is expected to eq 2
      when values are aligned
        when second pair is a keyword splat
          is expected to eq 0
        when both pairs are explicit pairs
          is expected to eq 0
      when receiver value is behind
        is expected to eq -2
  #value_on_new_line?
    when value starts on a new line
      is expected to be value on new line
    when pair is on a single line
      is expected not to be value on new line
    when value spans multiple lines
      is expected not to be value on new line

RuboCop::AST::DefNode
  #arguments?
    with no arguments
      is expected not to be arguments
    with a single regular argument
      is expected to be arguments
    with a single rest argument
      is expected to be arguments
    with multiple regular arguments
      is expected to be arguments
    with multiple mixed arguments
      is expected to be arguments
    with a single keyword argument
      is expected to be arguments
  #camel_case_method?
    with a camel case method
      is expected to be camel case method
    with a regular method
      is expected not to be camel case method
  #comparison_method?
    with a comparison method
      is expected to be comparison method
    with a regular method
      is expected not to be comparison method
  #method?
    when message does not match
      when argument is a symbol
        is expected not to be method :foo
      when argument is a string
        is expected not to be method "foo"
    when message matches
      when argument is a string
        is expected to be method "bar"
      when argument is a symbol
        is expected to be method :bar
  #body
    with a single expression body
      is expected to be send type
    with no body
      is expected to be nil
    with a multi-expression body
      is expected to be begin type
  #receiver
    with an instance method definition
      is expected to be nil
    with a singleton method definition
      is expected to be const type
    with a class method definition
      is expected to be self type
  #bang_method?
    with a bang method
      is expected to be bang method
    with a regular method
      is expected not to be bang method
    with a predicate method
      is expected not to be bang method
  #predicate_method?
    with a regular method
      is expected not to be predicate method
    with a predicate method
      is expected to be predicate method
    with a bang method
      is expected not to be predicate method
  #self_receiver?
    with an instance method definition
      is expected not to be self receiver
    with a singleton method definition
      is expected not to be self receiver
    with a class method definition
      is expected to be self receiver
  #block_argument?
    with no arguments
      is expected not to be block argument
    with regular arguments
      is expected not to be block argument
    with a block argument
      is expected to be block argument
    with mixed arguments
      is expected to be block argument
  #rest_argument?
    with regular arguments
      is expected not to be rest argument
    with no arguments
      is expected not to be rest argument
    with a rest argument
      is expected to be rest argument
    with mixed arguments
      is expected to be rest argument
  #operator_method?
    with a unary operator method
      is expected to be operator method
    with a binary operator method
      is expected to be operator method
    with a setter method
      is expected not to be operator method
    with a regular method
      is expected not to be operator method
  #arguments
    with multiple mixed arguments
      is expected to eq 2
    with multiple regular arguments
      is expected to eq 2
    with no arguments
      is expected to be empty
    with argument forwarding
      is expected to eq 1
    with a single regular argument
      is expected to eq 1
    with a single rest argument
      is expected to eq 1
  #const_receiver?
    with a class method definition
      is expected not to be const receiver
    with a singleton method definition
      is expected to be const receiver
    with an instance method definition
      is expected not to be const receiver
  #void_context?
    with a comparison method
      is expected not to be void context
    with a bracket assignment method
      is expected to be void context
    with a regular method
      is expected not to be void context
    with a regular assignment method
      is expected to be void context
    with an initializer method
      is expected to be void context
  #last_argument
    with multiple mixed arguments
      is expected to be restarg type
    with no arguments
      is expected to be nil
    with a single regular argument
      is expected to be arg type
    with a single keyword argument
      is expected to be kwoptarg type
    with multiple regular arguments
      is expected to be arg type
    with a single rest argument
      is expected to be restarg type
  .new
    with a defs node
      is expected to be a kind of RuboCop::AST::DefNode
    with a def node
      is expected to be a kind of RuboCop::AST::DefNode
  when using Ruby 2.7 or newer
    #argument_forwarding?
      is expected to be argument forwarding
  #assignment_method?
    with a regular method
      is expected not to be assignment method
    with a bracket assignment method
      is expected to be assignment method
    with a comparison method
      is expected not to be assignment method
    with an assignment method
      is expected to be assignment method
  #endless?
    with endless method definition
      is expected to be endless
    with standard method definition
      is expected not to be endless
  #first_argument
    with a single keyword argument
      is expected to be kwoptarg type
    with no arguments
      is expected to be nil
    with multiple mixed arguments
      is expected to be arg type
    with a single regular argument
      is expected to be arg type
    with multiple regular arguments
      is expected to be arg type
    with a single rest argument
      is expected to be restarg type
  #method_name
    with a plain method
      is expected to eq :foo
    with a setter method
      is expected to eq :foo=
    with an operator method
      is expected to eq :==
    with a unary method
      is expected to eq :-@

RuboCop::AST::YieldNode
  #const_receiver?
    is expected not to be const receiver
  #operator_method?
    is expected not to be operator method
  #method?
    when message does not match
      when argument is a string
        is expected not to be method "foo"
      when argument is a symbol
        is expected not to be method :foo
    when message matches
      when argument is a symbol
        is expected to be method :yield
      when argument is a string
        is expected to be method "yield"
  #last_argument
    with a single splat argument
      is expected to be splat type
    with multiple mixed arguments
      is expected to be splat type
    with multiple literal arguments
      is expected to be sym type
    with no arguments
      is expected to be nil
    with a single literal argument
      is expected to be sym type
  #implicit_call?
    is expected not to be implicit call
  #method_name
    is expected to eq :yield
  #splat_argument?
    with regular arguments
      is expected not to be splat argument
    with a splat argument
      is expected to be splat argument
    with mixed arguments
      is expected to be splat argument
    with no arguments
      is expected not to be splat argument
  #first_argument
    with multiple literal arguments
      is expected to be sym type
    with a single literal argument
      is expected to be sym type
    with a single splat argument
      is expected to be splat type
    with multiple mixed arguments
      is expected to be sym type
    with no arguments
      is expected to be nil
  #block_node
    is expected to be nil
  .new
    is expected to be a kind of RuboCop::AST::YieldNode
  #assignment_method?
    is expected not to be assignment method
  #parenthesized?
    with arguments
      when using parentheses
        is expected to be parenthesized
      when not using parentheses
        is expected not to be parenthesized
    with no arguments
      when using parentheses
        is expected to be parenthesized
      when not using parentheses
        is expected not to be parenthesized
  #command?
    when argument is a symbol
      is expected to be command :yield
    when argument is a string
      is expected to be command "yield"
  #dot?
    is expected not to be dot
  #receiver
    is expected to be nil
  #block_argument?
    is expected not to be block argument
  #bang_method?
    is expected not to be bang method
  #setter_method?
    is expected not to be setter method
  #arguments
    with a single splat argument
      is expected to eq 1
    with multiple mixed arguments
      is expected to eq 2
    with no arguments
      is expected to be empty
    with a single literal argument
      is expected to eq 1
    with multiple literal arguments
      is expected to eq 2
  #camel_case_method?
    is expected not to be camel case method
  #self_receiver?
    is expected not to be self receiver
  #block_literal?
    is expected not to be block literal
  #arguments?
    with a single splat argument
      is expected to be arguments
    with multiple literal arguments
      is expected to be arguments
    with no arguments
      is expected not to be arguments
    with a single literal argument
      is expected to be arguments
    with multiple mixed arguments
      is expected to be arguments
  #comparison_method?
    is expected not to be comparison method
  #double_colon?
    is expected not to be double colon
  #macro?
    is expected not to be macro
  #predicate_method?
    is expected not to be predicate method

RuboCop::AST::SymbolNode
  #value
    is expected to eq :foo
  .new
    with a symbol node
      is expected to be a kind of RuboCop::AST::SymbolNode

RuboCop::AST::WhileNode
  #do?
    with a do keyword
      is expected to be do
    without a do keyword
      is expected not to be do
  #keyword
    is expected to eq "while"
  #loop_keyword?
    with a statement while
      is expected to be loop keyword
    with a modifier while
      is expected to be loop keyword
  #inverse_keyword
    is expected to eq "until"
  #post_condition_loop?
    with a modifier while
      is expected to be post condition loop
    with a statement while
      is expected not to be post condition loop
  .new
    with a modifier while
      is expected to be a kind of RuboCop::AST::WhileNode
    with a statement while
      is expected to be a kind of RuboCop::AST::WhileNode

RuboCop::AST::NextNode
  behaves like wrapped arguments node
    #arguments
      with multiple literal arguments
        is expected to eq 2
      with a single argument
        is expected to eq 1
      with a single argument and braces
        is expected to eq 1
      with a single splat argument
        is expected to eq 1
      with no arguments
        is expected to be empty
      with no arguments and braces
        is expected to be empty
    .new
      without arguments
        is expected to be a kind of RuboCop::AST::NextNode
      with arguments
        is expected to be a kind of RuboCop::AST::NextNode

RuboCop::AST::ReturnNode
  behaves like wrapped arguments node
    #arguments
      with no arguments and braces
        is expected to be empty
      with no arguments
        is expected to be empty
      with a single argument
        is expected to eq 1
      with a single argument and braces
        is expected to eq 1
      with multiple literal arguments
        is expected to eq 2
      with a single splat argument
        is expected to eq 1
    .new
      without arguments
        is expected to be a kind of RuboCop::AST::ReturnNode
      with arguments
        is expected to be a kind of RuboCop::AST::ReturnNode

RuboCop::AST::Procarg0Node
  #name
    is expected to eq :x
  .new
    with a block
      is expected to be a kind of RuboCop::AST::ArgNode

RuboCop::AST::RescueNode
  #else?
    without an else statement
      is expected not to be else
    with an else statement
      is expected to be else
  .new
    is expected to be a kind of RuboCop::AST::RescueNode
  #else_branch
    without an else statement
      is expected to be nil
    with an else statement
      is expected to be send type
  #body
    is expected to be send type
  #resbody_branches
    is expected to all be resbody type
    is expected to eq 2
  #branches
    when there is no else keyword
      returns only then rescue bodies
    when there is an else
      returns all the bodies
      with an empty else
        returns all the bodies

RuboCop::AST::StrNode
  #character_literal?
    with a character literal
      is expected to be character literal
    with a normal string literal
      is expected not to be character literal
    with a heredoc
      is expected not to be character literal
  .new
    with a normal string
      is expected to be a kind of RuboCop::AST::StrNode
    with a string with interpolation
      is expected to be a kind of RuboCop::AST::StrNode
    with a heredoc
      is expected to be a kind of RuboCop::AST::StrNode
  #heredoc?
    with a normal string
      is expected not to be heredoc
    with a string with interpolation
      is expected not to be heredoc
    with a heredoc
      is expected to be heredoc

RuboCop::AST::BlockNode
  .new
    is expected to be a kind of RuboCop::AST::BlockNode
  #lambda?
    when block belongs to a stabby lambda
      is expected to be lambda
    when block belongs to a method lambda
      is expected to be lambda
    when block belongs to a non-lambda method
      is expected not to be lambda
  #single_line?
    when block is on several lines
      is expected not to be single line
    when block is on a single line
      is expected to be single line
  #braces?
    when enclosed in do-end keywords
      is expected not to be braces
    when enclosed in braces
      is expected to be braces
  #delimiters
    when enclosed in do-end keywords
      is expected to eq ["do", "end"]
    when enclosed in braces
      is expected to eq ["{", "}"]
  #argument_list
    with no arguments
      is expected to be empty
    all argument types
      is expected to eq [:a, :b, :c, :d, :e, :f, :g, :h, :i]
    >= Ruby 2.7
      using numbered parameters
        with skipped params
          is expected to eq [:_1, :_2, :_3, :_4, :_5, :_6, :_7]
        with sequential params
          is expected to eq [:_1, :_2]
  #void_context?
    when block method is each
      is expected to be void context
    when block method is tap
      is expected to be void context
    when block method is not each
      is expected not to be void context
  #arguments
    with destructured arguments
      is expected to eq 2
    with multiple mixed arguments
      is expected to eq 2
    with no arguments
      is expected to be empty
    with a single literal argument
      is expected to eq 1
    with a single splat argument
      is expected to eq 1
    >= Ruby 2.7
      using numbered parameters
        is expected to be empty
  #receiver
    with dot operator call
      is expected to eq "foo"
    with safe navigation operator call
      is expected to eq "foo"
  #opening_delimiter
    when enclosed in do-end keywords
      is expected to eq "do"
    when enclosed in braces
      is expected to eq "{"
  #keywords?
    when enclosed in do-end keywords
      is expected to be keywords
    when enclosed in braces
      is expected not to be keywords
  #closing_delimiter
    when enclosed in do-end keywords
      is expected to eq "end"
    when enclosed in braces
      is expected to eq "}"
  #arguments?
    with no arguments
      is expected not to be arguments
    with a single argument
      is expected to be arguments
    with a single splat argument
      is expected to be arguments
    with destructuring arguments
      is expected to be arguments
    >= Ruby 2.7
      using numbered parameters
        is expected not to be arguments
    with multiple mixed arguments
      is expected to be arguments
  #multiline?
    when block is on several lines
      is expected to be multiline
    when block is on a single line
      is expected not to be multiline

RuboCop::AST::OrAsgnNode
  #operator
    is expected to eq :"||"
  .new
    is expected to be a kind of RuboCop::AST::OrAsgnNode
  #assignment_node
    is expected to be a kind of RuboCop::AST::AsgnNode
  #name
    is expected to eq :var
  #expression
    is expected to eq s(:send, nil, :value)

RuboCop::AST::FloatNode
  #value
    is expected to eq 1.5
  .new
    is expected to be a kind of RuboCop::AST::FloatNode
  #sign?
    explicit positive float
      is expected to be sign
    explicit negative float
      is expected to be sign

RuboCop::AST::RuboCopCompatibility
  when ran from a compatible version of Rubocop
    issues a warning
  when ran from an incompatible version of Rubocop
    issues a warning

RuboCop::AST::ConstNode
  #module_name?
    is expected not to be module name
    with a constant with a lowercase letter
      is expected to be module name
  #each_path
    yields all parts of the namespace
  #absolute?
    is expected to be absolute
    with a non-namespaced constant
      is expected not to be absolute
    with a constant not starting with ::
      is expected not to be absolute
  #namespace
    is expected to eq "::Foo::Bar"
  #short_name
    is expected to eq :BAZ
  #relative?
    with a non-namespaced constant
      is expected to be relative

RuboCop::AST::Traversal
  knows all current node types
  for example fun(foo, :foo => 1)
    traverses all nodes
  for example next()
    traverses all nodes
  for example while class << self; a = tap do end; end; break; end
    traverses all nodes
  for example case foo;
        in a: {b:}, c:
          p c
      ; end
    traverses all nodes
  for example  :'#@@1'
    traverses all nodes
  for example begin meth end until foo
    traverses all nodes
  for example m { |**nil| }
    traverses all nodes
  for example ::Foo
    traverses all nodes
  for example case foo; in [x, y, *z] then true; end
    traverses all nodes
  for example foo::m += raise(bar) rescue nil
    traverses all nodes
  for example foo::Fun bar
    traverses all nodes
  for example  '#@1'
    traverses all nodes
  for example foo
    traverses all nodes
  for example foo::a = 1
    traverses all nodes
  for example f{ |a| }
    traverses all nodes
  for example case foo; in x then x; end
    traverses all nodes
  for example case foo; in 1..2 then true; end
    traverses all nodes
  for example A += 1
    traverses all nodes
  for example foo::C ||= raise(bar) rescue nil
    traverses all nodes
  for example case 1; in 2; 3; else; end
    traverses all nodes
  for example # Extracted from `parser` gem.
# Add the following code at the beginning of `def assert_parses`:
#
#    File.open('./out.rb', 'a+') do |f|
#      f << code << "\n\n#----\n" if versions.include? '2.7'
#    end

alias $a $b
    traverses all nodes
  for example foo < 1
    traverses all nodes
  for example foo.A = 1
    traverses all nodes
  for example foo[m bar]
    traverses all nodes
  for example meth 1 do end.fun(bar) {}
    traverses all nodes
  for example case foo; in [x,] then nil; end
    traverses all nodes
  for example @a |= 1
    traverses all nodes
  for example while foo; meth end
    traverses all nodes
  for example foo / 1
    traverses all nodes
  for example redo
    traverses all nodes
  for example def f(*); end
    traverses all nodes
  for example def String.foo; end
    traverses all nodes
  for example _1
    traverses all nodes
  for example desc "foo" do end
    traverses all nodes
  for example @@var = 10
    traverses all nodes
  for example p <<~E
    x
  \  y
E
    traverses all nodes
  for example a b{c(d)}, "x" do end
    traverses all nodes
  for example 42
    traverses all nodes
  when given an unexpected AST
    with too many children
      raises debugging error
    with too few children
      raises debugging error
  for example case foo; in * then nil; end
    traverses all nodes
  for example  %s{#@@1}
    traverses all nodes
  for example p <<~E
      x
        y
E
    traverses all nodes
  for example foo <= 1
    traverses all nodes
  for example ~foo
    traverses all nodes
  for example case foo; in { a: 1 } then true; end
    traverses all nodes
  for example %I[foo#{bar}]
    traverses all nodes
  for example tap (proc do end)
    traverses all nodes
  for example  %s{#@1}
    traverses all nodes
  for example foo::fun (1) {}
    traverses all nodes
  for example a b(c(d)), 1.0i do end
    traverses all nodes
  for example p <<~"E"
    x
  #{foo}
E
    traverses all nodes
  for example foo::C ||= raise bar rescue nil
    traverses all nodes
  for example a b(c d), 1.0i do end
    traverses all nodes
  for example a b(c(d)), /x/m do end
    traverses all nodes
  for example def f a, o=1, &b; end
    traverses all nodes
  for example meth 1 do end::fun(bar)
    traverses all nodes
  for example until foo do meth end
    traverses all nodes
  for example p -> { :hello }, a: 1 do end
    traverses all nodes
  for example !(a, b = foo)
    traverses all nodes
  for example undef foo, :bar, :"foo#{1}"
    traverses all nodes
  for example case foo; in x, y then nil; end
    traverses all nodes
  for example def m; class << self; class C; end; end; end
    traverses all nodes
  for example def foo(...); bar(...); end
    traverses all nodes
  for example { 1 => 2 }
    traverses all nodes
  for example p begin 1.times do 1 end end
    traverses all nodes
  for example fun(f bar)
    traverses all nodes
  for example fun(:foo => 1, &baz)
    traverses all nodes
  for example case foo; in [x, *y, z] then true; end
    traverses all nodes
  for example p <<~E
E
    traverses all nodes
  for example f{ |;
a
| }
    traverses all nodes
  for example return(foo)
    traverses all nodes
  for example defined? @foo
    traverses all nodes
  for example foo, bar, baz = 1, 2
    traverses all nodes
  for example f x: -> do meth do end end
    traverses all nodes
  for example def f ((*, p)); end
    traverses all nodes
  for example begin meth end while foo
    traverses all nodes
  for example if foo
then bar end
    traverses all nodes
  for example %q(foobar)
    traverses all nodes
  for example <<-'HERE'
a\
b
HERE
    traverses all nodes
  for example foo[0, 1] &&= 2
    traverses all nodes
  for example foo % 1
    traverses all nodes
  for example def self.m; _1; end
    traverses all nodes
  for example ...100
    traverses all nodes
  for example case foo; in ...2 then true; end
    traverses all nodes
  for example break
    traverses all nodes
  for example not(foo)
    traverses all nodes
  for example case foo; in ** then true; end
    traverses all nodes
  for example proc {_1 = nil}
    traverses all nodes
  for example foo (-1.3).abs
    traverses all nodes
  for example fun () {}
    traverses all nodes
  for example def f a, *r, p, &b; end
    traverses all nodes
  for example self::a, foo = foo
    traverses all nodes
  for example begin; meth; rescue foo => ex; bar; end
    traverses all nodes
  for example a b{c(d)}, 1.0r do end
    traverses all nodes
  for example fun
    traverses all nodes
  for example while def self.foo; tap do end; end; break; end
    traverses all nodes
  for example fun(:foo => 1)
    traverses all nodes
  when a class defines on_arg
    calls it for all arguments
  for example 1...2
    traverses all nodes
  for example +42
    traverses all nodes
  for example super foo
    traverses all nodes
  for example %W{a\
b}
    traverses all nodes
  for example ..100
    traverses all nodes
  for example !(foo...bar)
    traverses all nodes
  for example if foo; bar; else baz; end
    traverses all nodes
  for example a b(c(d)), /x/ do end
    traverses all nodes
  for example def f o=1, *r, &b; end
    traverses all nodes
  for example a b(c d), 1.0 do end
    traverses all nodes
  for example let (:a) { m do; end }
    traverses all nodes
  for example <<-"HERE"
#@@1
HERE
    traverses all nodes
  for example  '#@@1'
    traverses all nodes
  for example case foo; in self then true; end
    traverses all nodes
  for example next fun foo do end
    traverses all nodes
  for example f{ |*| }
    traverses all nodes
  for example <<-`HERE`
#@1
HERE
    traverses all nodes
  for example return fun foo do end
    traverses all nodes
  for example /a\
b/
    traverses all nodes
  for example foo[0, 1] += m foo
    traverses all nodes
  for example case foo; in a: then true; end
    traverses all nodes
  for example meth rescue bar
    traverses all nodes
  for example p p{p(p);p p}, tap do end
    traverses all nodes
  for example begin foo!; bar! end
    traverses all nodes
  for example a b(c(d)), :e do end
    traverses all nodes
  for example self.A, foo = foo
    traverses all nodes
  for example case foo; when 1, *baz; bar; when *foo; end
    traverses all nodes
  for example def f ((a, *r, p)); end
    traverses all nodes
  for example foo ** 1
    traverses all nodes
  for example <<-`HERE`
#@@1
HERE
    traverses all nodes
  for example a b(c d), :e do end
    traverses all nodes
  for example __ENCODING__
    traverses all nodes
  for example -42
    traverses all nodes
  for example BEGIN { 1 }
    traverses all nodes
  for example -> a: { }
    traverses all nodes
  for example %Q{a\
b}
    traverses all nodes
  for example a b(c d), /x/ do end
    traverses all nodes
  for example def foo
=begin
=end
end
    traverses all nodes
  for example m1 :k => m2 do; m3() do end; end
    traverses all nodes
  for example
    traverses all nodes
  for example case foo;
        in {a: 1
        }
          false
      ; end
    traverses all nodes
  for example def f ((a, a1)); end
    traverses all nodes
  for example def f ((a, *)); end
    traverses all nodes
  for example [1, 2]
    traverses all nodes
  for example fun (1
)
    traverses all nodes
  for example super(foo)
    traverses all nodes
  for example def f foo: -1
; end
    traverses all nodes
  for example a b(c d), 1 do end
    traverses all nodes
  for example unless foo; bar; else baz; end
    traverses all nodes
  for example not foo
    traverses all nodes
  for example f{ |a, &b| }
    traverses all nodes
  for example -> { _1 + _9}
    traverses all nodes
  for example if foo then bar; end
    traverses all nodes
  for example m ->(a = ->{_1}) {a}
    traverses all nodes
  for example  /#@1/
    traverses all nodes
  for example def f a, o=1, *r, p, &b; end
    traverses all nodes
  for example a b(c d), "x" do end
    traverses all nodes
  for example def f(**foo); end
    traverses all nodes
  for example  %Q{#@1}
    traverses all nodes
  for example case foo; in "#{ 'a' }": then true; end
    traverses all nodes
  for example case foo; in x if true; nil; end
    traverses all nodes
  for example <<-'HERE'
#@@1
HERE
    traverses all nodes
  for example unless foo; bar; end
    traverses all nodes
  for example return
    traverses all nodes
  for example __ENCODING__
    traverses all nodes
  for example f{ |o=1, *r, p, &b| }
    traverses all nodes
  for example def foo(...); super(...); end
    traverses all nodes
  for example not m foo
    traverses all nodes
  for example begin; meth; rescue Exception; bar; end
    traverses all nodes
  for example <<-"HERE"
#@1
HERE
    traverses all nodes
  for example :foo
    traverses all nodes
  for example 42.1i
    traverses all nodes
  for example ()
    traverses all nodes
  for example true ? 1.tap do |n| p n end : 0
    traverses all nodes
  for example 42r
    traverses all nodes
  for example p <<~E
  x
        y
E
    traverses all nodes
  for example def f *, **; end
    traverses all nodes
  for example -foo
    traverses all nodes
  for example def f ; end
    traverses all nodes
  for example class A; _1; end
    traverses all nodes
  for example def foo(_, _); end
    traverses all nodes
  for example -2.0 ** 10
    traverses all nodes
  for example class Foo < Bar; end
    traverses all nodes
  for example "foo#{bar}baz"
    traverses all nodes
  for example nil
    traverses all nodes
  for example -> a: 1 { }
    traverses all nodes
  for example fun(*bar, &baz)
    traverses all nodes
  for example begin ensure end
    traverses all nodes
  for example def f(foo:); end
    traverses all nodes
  for example foo::A += m foo
    traverses all nodes
  for example f{ |foo: 1, bar: 2, **baz, &b| }
    traverses all nodes
  when a class defines `on_block_pass`
    calls it for all block-pass arguments
  for example foo&.bar {}
    traverses all nodes
  for example f{ |a| }
    traverses all nodes
  for example a ? b & '': nil
    traverses all nodes
  for example case foo; in *x then nil; end
    traverses all nodes
  for example foo | 1
    traverses all nodes
  for example case foo; in A then true; end
    traverses all nodes
  for example m "#{[]}"
    traverses all nodes
  for example a ||= 1
    traverses all nodes
  for example  %W[#@1]
    traverses all nodes
  for example def f *r, &b; end
    traverses all nodes
  for example fun(foo, :foo => 1, &baz)
    traverses all nodes
  for example foo * 1
    traverses all nodes
  for example meth do; foo; rescue; bar; end
    traverses all nodes
  for example case foo; in 1.. then true; end
    traverses all nodes
  for example p <<~E
  x
E
    traverses all nodes
  for example meth until foo
    traverses all nodes
  for example case foo; in A(1, 2) then true; end
    traverses all nodes
  for example foo, bar = meth rescue [1, 2]
    traverses all nodes
  for example p <<~E
  x

  y
E
    traverses all nodes
  for example %w[]
    traverses all nodes
  for example meth 1 do end.fun(bar)
    traverses all nodes
  for example a, b = *foo, bar
    traverses all nodes
  for example %I{a\
b}
    traverses all nodes
  for example m def x(); end; 1.tap do end
    traverses all nodes
  for example def f(*foo); end
    traverses all nodes
  for example %I[foo #{bar}]
    traverses all nodes
  for example lambda{|;a|a}
    traverses all nodes
  for example *b = bar
    traverses all nodes
  for example case foo; in a: 1, _a:, ** then true; end
    traverses all nodes
  for example -1.33
    traverses all nodes
  for example # coding:utf-8
         "\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB2\xD0\xB5\xD1\x80\xD0\xBA\xD0\xB0"
    traverses all nodes
  for example Foo
    traverses all nodes
  for example class Foo; end
    traverses all nodes
  for example def f(foo=1, bar=2); end
    traverses all nodes
  for example case foo; in [x, y, *] then true; end
    traverses all nodes
  for example a b{c d}, /x/m do end
    traverses all nodes
  for example def a; @@var |= 10; end
    traverses all nodes
  for example def String=; end
    traverses all nodes
  for example <<-'HERE'
#@1
HERE
    traverses all nodes
  for example def f &b; end
    traverses all nodes
  for example f{ |;a| }
    traverses all nodes
  for example class Foo end
    traverses all nodes
  for example case foo; in ^foo then nil; end
    traverses all nodes
  for example if (bar; a, b = foo); end
    traverses all nodes
  for example f{ |a, o=1, &b| }
    traverses all nodes
  for example foo ? 1 : 2
    traverses all nodes
  for example a&.b &&= 1
    traverses all nodes
  for example false ? raise do end : tap do end
    traverses all nodes
  for example super()
    traverses all nodes
  for example f{ |*r, p, &b| }
    traverses all nodes
  for example case foo; in "#{ %Q{a} }": then true; end
    traverses all nodes
  for example def String; end
    traverses all nodes
  for example def self._6; end
    traverses all nodes
  for example %s{a\
b}
    traverses all nodes
  for example def foo; end
    traverses all nodes
  for example module Bar::Foo; end
    traverses all nodes
  for example f{ |a| }
    traverses all nodes
  for example fun do end
    traverses all nodes
  for example foo >> 1
    traverses all nodes
  for example +foo
    traverses all nodes
  for example retry
    traverses all nodes
  for example foo << 1
    traverses all nodes
  for example def f (((a))); end
    traverses all nodes
  for example foo::Fun()
    traverses all nodes
  for example yield
    traverses all nodes
  for example foo =~ 1
    traverses all nodes
  for example $+
    traverses all nodes
  for example foo = *bar
    traverses all nodes
  for example *b, c = bar
    traverses all nodes
  for example a b{c d}, "x" do end
    traverses all nodes
  for example case foo; in A[1, 2] then true; end
    traverses all nodes
  for example if foo..bar; end
    traverses all nodes
  for example super
    traverses all nodes
  for example def f(&block); end
    traverses all nodes
  for example case foo; in [x, y] then true; end
    traverses all nodes
  for example yield(foo)
    traverses all nodes
  for example a b(c d), /x/m do end
    traverses all nodes
  for example fun (1)
    traverses all nodes
  for example def f (foo: 1, &b); end
    traverses all nodes
  for example p <<~"E"
    x
  #{"  y"}
E
    traverses all nodes
  for example m { |(foo, bar)| }
    traverses all nodes
  for example a = b += raise :x
    traverses all nodes
  for example def f ((*r)); end
    traverses all nodes
  for example  %x{#@1}
    traverses all nodes
  for example 'a\
b'
    traverses all nodes
  for example case foo; in ..2 then true; end
    traverses all nodes
  for example foo.m += raise(bar) rescue nil
    traverses all nodes
  for example f{ |foo: 1, &b| }
    traverses all nodes
  for example meth (-1.3).abs
    traverses all nodes
  for example p ->() do a() do end end
    traverses all nodes
  for example false ? raise {} : tap {}
    traverses all nodes
  for example case foo; in [*, x] then true; end
    traverses all nodes
  for example begin; meth; rescue; baz; else foo; ensure; bar end
    traverses all nodes
  for example break(foo)
    traverses all nodes
  for example {a: if true then 42 end}
    traverses all nodes
  for example proc {_1 = nil}
    traverses all nodes
  for example case; when foo; 'foo'; else 'bar'; end
    traverses all nodes
  for example case foo; in A[x:] then true; end
    traverses all nodes
  for example  :'#@1'
    traverses all nodes
  for example /source/im
    traverses all nodes
  for example case foo; when 'bar'; bar; else baz; end
    traverses all nodes
  for example ::Foo = 10
    traverses all nodes
  for example def f a, o=1, *r, &b; end
    traverses all nodes
  for example %W[foo #{bar}]
    traverses all nodes
  for example @var = 10
    traverses all nodes
  for example def m; class << self; module M; end; end; end
    traverses all nodes
  for example while class Foo a = tap do end; end; break; end
    traverses all nodes
  for example case foo; in [x, *, y] then true; end
    traverses all nodes
  for example [/()\1/, ?#]
    traverses all nodes
  for example meth 1 do end::fun bar
    traverses all nodes
  for example a b(c d), 1.0r do end
    traverses all nodes
  for example foo - 1
    traverses all nodes
  for example $var = 10
    traverses all nodes
  for example case foo; in A::B then true; end
    traverses all nodes
  for example <<~E
    1 \
    2
    3
E
    traverses all nodes
  for example foo + 1
    traverses all nodes
  for example false
    traverses all nodes
  for example self::A, foo = foo
    traverses all nodes
  for example a b{c d}, :e do end
    traverses all nodes
  for example ((b, )) = foo
    traverses all nodes
  for example  %{#@@1}
    traverses all nodes
  for example a &&= 1
    traverses all nodes
  for example a b(c(d)), 1.0 do end
    traverses all nodes
  for example foo.m += raise bar rescue nil
    traverses all nodes
  for example break()
    traverses all nodes
  for example foo = meth rescue bar
    traverses all nodes
  for example self.a, self[1, 2] = foo
    traverses all nodes
  for example f{ |&b| }
    traverses all nodes
  for example foo && bar
    traverses all nodes
  for example foo::a += 1
    traverses all nodes
  for example foo.fun bar
    traverses all nodes
  for example fun(1)
    traverses all nodes
  for example case foo; when 'bar', 'baz'; bar; end
    traverses all nodes
  for example case foo; in A[] then true; end
    traverses all nodes
  for example p :foo, {a: proc do end, b: proc do end}
    traverses all nodes
  for example @foo
    traverses all nodes
  for example <<-E
    1 \
    2
    3
E
    traverses all nodes
  for example fun(1) { }
    traverses all nodes
  for example alias $a $+
    traverses all nodes
  for example `a\
b`
    traverses all nodes
  for example a b{c(d)}, /x/m do end
    traverses all nodes
  for example not()
    traverses all nodes
  for example f(a ? "a":1)
    traverses all nodes
  for example 'foobar'
    traverses all nodes
  for example foo > 1
    traverses all nodes
  for example f{ |a, *| }
    traverses all nodes
  for example case foo; in 1...2 then true; end
    traverses all nodes
  for example  %r{#@@1}
    traverses all nodes
  for example <<~FOO
  baz\
  qux
FOO
    traverses all nodes
  for example begin end
    traverses all nodes
  for example def f a, o=1, p, &b; end
    traverses all nodes
  for example p :foo, {proc do end => proc do end, b: proc do end}
    traverses all nodes
  for example { 1 => 2, :foo => "bar" }
    traverses all nodes
  for example class A < B
end
    traverses all nodes
  for example f{ |a, *s, &b| }
    traverses all nodes
  for example def f o=1, p, &b; end
    traverses all nodes
  for example a b{c d}, 1 do end
    traverses all nodes
  for example case foo; in A() then true; end
    traverses all nodes
  for example { foo: 2 }
    traverses all nodes
  for example case foo; when 'bar' then bar; end
    traverses all nodes
  for example 42.1ri
    traverses all nodes
  for example fun(foo, *bar, &baz)
    traverses all nodes
  for example _2 = 1
    traverses all nodes
  for example fun(&bar)
    traverses all nodes
  for example case foo; in a: 1, b: 2 then true; end
    traverses all nodes
  for example !/wat/
    traverses all nodes
  for example if (bar); foo; end
    traverses all nodes
  for example fun (1).to_i
    traverses all nodes
  for example foo and bar
    traverses all nodes
  for example foo.C += raise bar rescue nil
    traverses all nodes
  for example yield()
    traverses all nodes
  for example foo[1, 2] = 3
    traverses all nodes
  for example foo || bar
    traverses all nodes
  for example if (a, b = foo); end
    traverses all nodes
  for example proc {|_3|}
    traverses all nodes
  for example  %{#@1}
    traverses all nodes
  for example p :foo, {"a": proc do end, b: proc do end}
    traverses all nodes
  for example f{ |a, c| }
    traverses all nodes
  for example for a in foo do p a; end
    traverses all nodes
  for example class Foo < a:b; end
    traverses all nodes
  for example foo.a += 1
    traverses all nodes
  for example a #
  #
.foo
    traverses all nodes
  for example def f(foo, bar); end
    traverses all nodes
  for example foo.a ||= 1
    traverses all nodes
  for example -> (arg={}) {}
    traverses all nodes
  for example %q{a\
b}
    traverses all nodes
  for example %i[]
    traverses all nodes
  for example  :"#@@1"
    traverses all nodes
  for example foo::m += raise bar rescue nil
    traverses all nodes
  for example m a + b do end
    traverses all nodes
  for example -2 ** 10
    traverses all nodes
  for example unless foo then bar; else baz; end
    traverses all nodes
  for example foo[bar,]
    traverses all nodes
  for example fun!
    traverses all nodes
  for example END { 1 }
    traverses all nodes
  for example 1 in [a]; a
    traverses all nodes
  for example fun(*bar)
    traverses all nodes
  for example case foo;
        in {a:
        }
          true
      ; end
    traverses all nodes
  for example case foo;
        in {a:
              2}
          false
      ; end
    traverses all nodes
  for example "a\
b"
    traverses all nodes
  for example def f (foo: 1, bar: 2, **baz, &b); end
    traverses all nodes
  for example a b{c(d)}, 1 do end
    traverses all nodes
  for example foo.C += raise(bar) rescue nil
    traverses all nodes
  for example -> do _1 + _9 end
    traverses all nodes
  for example f{ || }
    traverses all nodes
  for example [1, *foo, 2]
    traverses all nodes
  for example a, *b, c = bar
    traverses all nodes
  for example ->{ }
    traverses all nodes
  for example while def foo a = tap do end; end; break; end
    traverses all nodes
  for example foo != 1
    traverses all nodes
  for example fun(foo, *bar)
    traverses all nodes
  for example def String::foo; end
    traverses all nodes
  for example !(foo..bar)
    traverses all nodes
  for example while foo do meth end
    traverses all nodes
  for example  "#@1"
    traverses all nodes
  for example { }
    traverses all nodes
  for example :"foo#{bar}baz"
    traverses all nodes
  for example a b(c(d)), 1.0r do end
    traverses all nodes
  for example var = 10; var
    traverses all nodes
  for example case foo; in [*x, y] then true; end
    traverses all nodes
  for example def a b:
return
end
    traverses all nodes
  for example case foo; in A(x:) then true; end
    traverses all nodes
  for example `foo#{bar}baz`
    traverses all nodes
  for example case foo; in "#{ %q{a} }": then true; end
    traverses all nodes
  for example f (g rescue nil)
    traverses all nodes
  for example foo.a = 1
    traverses all nodes
  for example case foo; in "a": then true; end
    traverses all nodes
  for example foo[:baz => 1,]
    traverses all nodes
  for example  "#@@1"
    traverses all nodes
  for example defined? foo
    traverses all nodes
  for example ->{ }
    traverses all nodes
  for example def f foo:
; end
    traverses all nodes
  for example while not (true) do end
    traverses all nodes
  for example 1..
    traverses all nodes
  for example foo[1, 2]
    traverses all nodes
  for example begin; meth; rescue; foo; else; bar; end
    traverses all nodes
  for example  `#@1`
    traverses all nodes
  for example case foo; in **a then true; end
    traverses all nodes
  for example /foo#{bar}baz/
    traverses all nodes
  for example @@var |= 10
    traverses all nodes
  for example foo or bar
    traverses all nodes
  for example until foo; meth end
    traverses all nodes
  for example 42.1r
    traverses all nodes
  for example "#@a #@@a #$a"
    traverses all nodes
  for example a&.b = 1
    traverses all nodes
  for example a, *b = bar
    traverses all nodes
  for example /(?<match>bar)/ =~ 'bar'; match
    traverses all nodes
  for example %{a\
b}
    traverses all nodes
  for example foo.a &&= 1
    traverses all nodes
  for example foo::A = 1
    traverses all nodes
  for example case foo; in "#{ 'a' }": 1 then true; end
    traverses all nodes
  for example m = -> *args do end
    traverses all nodes
  for example foo && (a, b = bar)
    traverses all nodes
  for example foo === 1
    traverses all nodes
  for example case foo; in 1; end
    traverses all nodes
  for example case; when foo; 'foo'; end
    traverses all nodes
  for example a += b = raise :x
    traverses all nodes
  for example foo.A += 1
    traverses all nodes
  for example %i[foo bar]
    traverses all nodes
  for example def f **baz, &b; end
    traverses all nodes
  for example p :foo, {** proc do end, b: proc do end}
    traverses all nodes
  for example foo = raise bar rescue nil
    traverses all nodes
  for example foo[0] += raise(bar) rescue nil
    traverses all nodes
  for example def foo(...); bar(...); end
    traverses all nodes
  for example :"a\
b"
    traverses all nodes
  for example return()
    traverses all nodes
  for example foo <=> 1
    traverses all nodes
  for example f{ |a, o=1, o1=2, *r, &b| }
    traverses all nodes
  for example <<HERE
foo
bar
HERE
    traverses all nodes
  for example while def foo; tap do end; end; break; end
    traverses all nodes
  for example def until; end
    traverses all nodes
  for example meth[] {}
    traverses all nodes
  for example f{ |a, *s| }
    traverses all nodes
  for example foo.A += m foo
    traverses all nodes
  for example def foo raise; raise A::B, ''; end
    traverses all nodes
  for example  :"#@1"
    traverses all nodes
  for example foo >= 1
    traverses all nodes
  for example m do _1 + _9 end
    traverses all nodes
  for example  /#@@1/
    traverses all nodes
  for example bar unless foo
    traverses all nodes
  for example ->(a) { }
    traverses all nodes
  for example "#{-> foo {}}"
    traverses all nodes
  for example def END; end
    traverses all nodes
  for example if foo; bar; elsif baz; 1; else 2; end
    traverses all nodes
  for example foo::a += m foo
    traverses all nodes
  for example foo[1, 2]
    traverses all nodes
  for example a #
#
.foo
    traverses all nodes
  for example case foo; in x unless true; nil; end
    traverses all nodes
  for example foo.fun
    traverses all nodes
  for example 42i
    traverses all nodes
  for example ->(scope) {}; scope
    traverses all nodes
  for example -> do end
    traverses all nodes
  for example f{ |o=1, *r, &b| }
    traverses all nodes
  for example break fun foo do end
    traverses all nodes
  for example module ::Foo; end
    traverses all nodes
  for example case foo; in *x, y, z then nil; end
    traverses all nodes
  for example def f ((a, *r)); end
    traverses all nodes
  for example fun { }
    traverses all nodes
  for example assert do: true
    traverses all nodes
  for example case foo; in x, *y, z then nil; end
    traverses all nodes
  for example ::A, foo = foo
    traverses all nodes
  for example foo = bar = m foo
    traverses all nodes
  for example /\xa8/n =~ ""
    traverses all nodes
  for example m [], 1 do end
    traverses all nodes
  for example case foo; in a:, b: then true; end
    traverses all nodes
  for example -> (a) { }
    traverses all nodes
  for example ->(**nil) {}
    traverses all nodes
  for example a b{c d}, /x/ do end
    traverses all nodes
  for example !foo
    traverses all nodes
  for example p <<~"E"
  x\n   y
E
    traverses all nodes
  for example foo[0, 1] ||= 2
    traverses all nodes
  for example break foo
    traverses all nodes
  for example fun (1) {}
    traverses all nodes
  for example  %x{#@@1}
    traverses all nodes
  for example def x(_4) end
    traverses all nodes
  for example foo::(1)
    traverses all nodes
  for example  %w[ #@@1 ]
    traverses all nodes
  for example a @b do |c|;end
    traverses all nodes
  for example let () { m(a) do; end }
    traverses all nodes
  for example  %w[ #@1 ]
    traverses all nodes
  for example a b{c(d)}, 1.0i do end
    traverses all nodes
  for example ?a
    traverses all nodes
  for example `foobar`
    traverses all nodes
  for example p <<~E
  x

y
E
    traverses all nodes
  for example td (1_500).toString(); td.num do; end
    traverses all nodes
  for example -> * { }
    traverses all nodes
  for example a, (b, c) = foo
    traverses all nodes
  for example defined?(foo)
    traverses all nodes
  for example foo & 1
    traverses all nodes
  for example  %I[#@@1]
    traverses all nodes
  for example f{  }
    traverses all nodes
  for example a b{c d}, 1.0 do end
    traverses all nodes
  for example case foo; in 1... then true; end
    traverses all nodes
  for example next foo
    traverses all nodes
  for example def f *r, p, &b; end
    traverses all nodes
  for example self
    traverses all nodes
  for example <<-"HERE"
a\
b
HERE
    traverses all nodes
  for example begin; meth; rescue; foo; end
    traverses all nodes
  for example { 'foo': 2, 'bar': {}}
    traverses all nodes
  for example { 'foo': 2 }
    traverses all nodes
  for example %W()
    traverses all nodes
  for example case foo; in [x] then nil; end
    traverses all nodes
  for example t=1;(foo)?t:T
    traverses all nodes
  for example a b(c(d)), 1 do end
    traverses all nodes
  for example ::A += 1
    traverses all nodes
  for example <<`HERE`
foo
bar
HERE
    traverses all nodes
  for example  %I[#@1]
    traverses all nodes
  for example next(foo)
    traverses all nodes
  for example meth 1 do end.fun bar do end
    traverses all nodes
  for example $foo
    traverses all nodes
  for example foo !~ 1
    traverses all nodes
  for example def m; class << self; A = nil; end; end
    traverses all nodes
  for example def f(**); end
    traverses all nodes
  for example case 1; in 2; 3; else; 4; end
    traverses all nodes
  for example class << foo; _1; end
    traverses all nodes
  for example begin; meth; rescue; baz; ensure; bar; end
    traverses all nodes
  for example if /wat/; end
    traverses all nodes
  for example f{ |foo:| }
    traverses all nodes
  for example unless foo then bar; end
    traverses all nodes
  for example case foo; in "a": 1 then true; end
    traverses all nodes
  for example def f a, &b; end
    traverses all nodes
  for example foo "#{(1+1).to_i}" do; end
    traverses all nodes
  for example foo += m foo
    traverses all nodes
  for example def x; self::A ||= 1; end
    traverses all nodes
  for example  %r{#@1}
    traverses all nodes
  for example a, * = bar
    traverses all nodes
  for example def f ((*)); end
    traverses all nodes
  for example assert dogs
    traverses all nodes
  for example meth 1 do end.fun {}
    traverses all nodes
  for example  %i[ #@1 ]
    traverses all nodes
  for example a #
  #
&.foo
    traverses all nodes
  for example  %q{#@1}
    traverses all nodes
  for example foo = raise(bar) rescue nil
    traverses all nodes
  for example $10
    traverses all nodes
  for example case foo; in (1) then true; end
    traverses all nodes
  for example case foo; in { a: 1, } then true; end
    traverses all nodes
  for example f <<-TABLE do
TABLE
end
    traverses all nodes
  for example bar if foo
    traverses all nodes
  for example case foo; in "#{ %Q{a} }": 1 then true; end
    traverses all nodes
  for example def f ((a, *, p)); end
    traverses all nodes
  for example def foo(_a, _a); end
    traverses all nodes
  for example meth while foo
    traverses all nodes
  for example p <<~E
  x
    y
E
    traverses all nodes
  for example foo += meth rescue bar
    traverses all nodes
  for example super do end
    traverses all nodes
  for example case foo; in 1 | 2 then true; end
    traverses all nodes
  for example p <<~E "  y"
  x
E
    traverses all nodes
  for example for a, b in foo; p a, b; end
    traverses all nodes
  for example %I()
    traverses all nodes
  for example  `#@@1`
    traverses all nodes
  for example p <<~E
  E
    traverses all nodes
  for example m { _1 + _9 }
    traverses all nodes
  for example case foo; in "#{ %q{a} }": 1 then true; end
    traverses all nodes
  for example for a in foo; p a; end
    traverses all nodes
  for example p <<~`E`
    x
  #{foo}
E
    traverses all nodes
  for example 42ri
    traverses all nodes
  for example 1.33
    traverses all nodes
  for example f{ |*, &b| }
    traverses all nodes
  for example f{ |a, o=1, *r, p, &b| }
    traverses all nodes
  for example def f(foo: 1); end
    traverses all nodes
  for example case foo; when 'bar'; bar; end
    traverses all nodes
  for example foo[0] += raise bar rescue nil
    traverses all nodes
  for example while class << self; tap do end; end; break; end
    traverses all nodes
  for example case foo;
        in {Foo: 42
        }
          false
      ; end
    traverses all nodes
  for example foo, bar = m foo
    traverses all nodes
  for example case foo; in x, y, then nil; end
    traverses all nodes
  for example %W"#{1}"
    traverses all nodes
  for example def self::foo; end
    traverses all nodes
  for example a += 1
    traverses all nodes
  for example a = 1; a b: 1
    traverses all nodes
  for example def BEGIN; end
    traverses all nodes
  for example case foo; in [x, y,] then true; end
    traverses all nodes
  for example [ 1, 2 => 3 ]
    traverses all nodes
  for example         case [__FILE__, __LINE__ + 1, __ENCODING__]
          in [__FILE__, __LINE__, __ENCODING__]
        end
    traverses all nodes
  for example  %W[#@@1]
    traverses all nodes
  for example case foo; in a: 1 then true; end
    traverses all nodes
  for example o = {
a:
1
}
    traverses all nodes
  for example @@foo
    traverses all nodes
  for example a = b = raise :x
    traverses all nodes
  for example Bar::Foo = 10
    traverses all nodes
  for example a b{c d}, 1.0i do end
    traverses all nodes
  for example 1...
    traverses all nodes
  for example *, c, d = bar
    traverses all nodes
  for example a b{c(d)}, 1.0 do end
    traverses all nodes
  for example p <<~E
          x
  y
E
    traverses all nodes
  for example foo.(1)
    traverses all nodes
  for example case foo; in 1, "a", [], {} then nil; end
    traverses all nodes
  for example foo, bar = 1, 2
    traverses all nodes
  for example def f o=1, &b; end
    traverses all nodes
  for example %w{a\
b}
    traverses all nodes
  for example while class Foo; tap do end; end; break; end
    traverses all nodes
  for example %W[foo #{bar}foo#@baz]
    traverses all nodes
  for example foo || (a, b = bar)
    traverses all nodes
  for example true
    traverses all nodes
  for example Bar::Foo
    traverses all nodes
  for example f{ |a, *, &b| }
    traverses all nodes
  for example  %q{#@@1}
    traverses all nodes
  for example * = bar
    traverses all nodes
  for example def f(**nil); end
    traverses all nodes
  for example foo[1, 2] = 3
    traverses all nodes
  for example %x{a\
b}
    traverses all nodes
  for example ->(a; foo, bar) { }
    traverses all nodes
  for example f{ |o=1, &b| }
    traverses all nodes
  for example @foo, @@bar = *foo
    traverses all nodes
  for example a b(c(d)), "x" do end
    traverses all nodes
  for example def (foo).foo; end
    traverses all nodes
  for example [*foo]
    traverses all nodes
  for example p :foo, {:a => proc do end, b: proc do end}
    traverses all nodes
  for example case foo; in x, then nil; end
    traverses all nodes
  for example f{ |**baz, &b| }
    traverses all nodes
  for example m { |foo| }
    traverses all nodes
  for example begin; meth; ensure; bar; end
    traverses all nodes
  for example a, *, c = bar
    traverses all nodes
  for example [1, *foo]
    traverses all nodes
  for example  %Q{#@@1}
    traverses all nodes
  for example +2.0 ** 10
    traverses all nodes
  for example a&.b
    traverses all nodes
  for example case foo; in ->{ 42 } then true; end
    traverses all nodes
  for example "#{1}"
    traverses all nodes
  for example __LINE__
    traverses all nodes
  for example %r{a\
b}
    traverses all nodes
  for example !m foo
    traverses all nodes
  for example a b{c(d)}, /x/ do end
    traverses all nodes
  for example f{ |a,| }
    traverses all nodes
  for example def _5; end
    traverses all nodes
  for example module A; _1; end
    traverses all nodes
  for example f{ |o=1, p, &b| }
    traverses all nodes
  for example foo += raise bar rescue nil
    traverses all nodes
  for example foo == 1
    traverses all nodes
  for example def f o=1, *r, p, &b; end
    traverses all nodes
  for example a #
#
&.foo
    traverses all nodes
  for example /#)/x
    traverses all nodes
  for example :'a\
b'
    traverses all nodes
  for example def foo() a:b end
    traverses all nodes
  for example p <<~E
    x
  \  y
E
    traverses all nodes
  for example super foo, bar do end
    traverses all nodes
  for example if foo then bar; else baz; end
    traverses all nodes
  for example <<'HERE'
foo
bar
HERE
    traverses all nodes
  for example f { || a:b }
    traverses all nodes
  for example __FILE__
    traverses all nodes
  for example next
    traverses all nodes
  for example m ->(a: ->{_1}) {a}
    traverses all nodes
  for example foo = bar, 1
    traverses all nodes
  for example def f a, *r, &b; end
    traverses all nodes
  for example p <<~E
  x
    y
E
    traverses all nodes
  for example def f foo = 1; end
    traverses all nodes
  for example Foo = 10
    traverses all nodes
  for example "foo#@a" "bar"
    traverses all nodes
  for example /#{1}(?<match>bar)/ =~ 'bar'
    traverses all nodes
  for example if foo; bar; end
    traverses all nodes
  for example case foo; in ::A then true; end
    traverses all nodes
  for example  %i[ #@@1 ]
    traverses all nodes
  for example f{ |*s, &b| }
    traverses all nodes
  for example module Foo; end
    traverses all nodes
  for example %w[foo bar]
    traverses all nodes
  for example if foo...bar; end
    traverses all nodes
  for example begin; meth; rescue => @ex; bar; end
    traverses all nodes
  for example yield foo
    traverses all nodes
  for example def f(foo); end
    traverses all nodes
  for example f{ |a, o=1, p, &b| }
    traverses all nodes
  for example -> do rescue; end
    traverses all nodes
  for example a += b += raise :x
    traverses all nodes
  for example <<-`HERE`
a\
b
HERE
    traverses all nodes
  for example a b{c(d)}, :e do end
    traverses all nodes
  for example 1..2
    traverses all nodes
  for example case foo; in 1 => a then true; end
    traverses all nodes
  for example meth 1 do end.fun bar
    traverses all nodes
  for example foo::fun bar
    traverses all nodes
  for example { foo: 2, **bar }
    traverses all nodes
  for example begin; meth; rescue Exception, foo; bar; end
    traverses all nodes
  for example foo.fun (1) {}
    traverses all nodes
  for example :'foo'
    traverses all nodes
  for example foo = m foo
    traverses all nodes
  for example begin; meth; rescue => ex; bar; end
    traverses all nodes
  for example class << foo; nil; end
    traverses all nodes
  for example f{ |*s| }
    traverses all nodes
  for example (foo, bar) = 1, 2
    traverses all nodes
  for example [ 1 => 2 ]
    traverses all nodes
  for example %i{a\
b}
    traverses all nodes
  for example def self.foo; end
    traverses all nodes
  for example f{ |a, *r, p, &b| }
    traverses all nodes
  for example foo.a += m foo
    traverses all nodes
  for example def foo(...); end
    traverses all nodes
  for example def x; ::A ||= 1; end
    traverses all nodes
  for example alias :foo bar
    traverses all nodes
  for example foo[0, 1] += 2
    traverses all nodes
  for example bar def foo; self.each do end end
    traverses all nodes
  for example def foo
 a:b end
    traverses all nodes
  for example def f ((*r, p)); end
    traverses all nodes
  for example foo = baz, *bar
    traverses all nodes
  for example f{ | | }
    traverses all nodes
  for example m [] do end
    traverses all nodes
  for example foo::fun
    traverses all nodes
  for example return foo
    traverses all nodes
  for example foo ^ 1
    traverses all nodes
  for example fun() { }
    traverses all nodes
  for example B::A += 1
    traverses all nodes
  for example foo[bar, :baz => 1,]
    traverses all nodes
  for example begin; rescue LoadError; else; end
    traverses all nodes
  for example while def self.foo a = tap do end; end; break; end
    traverses all nodes
  for example foo += raise(bar) rescue nil
    traverses all nodes
  for example a b{c d}, 1.0r do end
    traverses all nodes
  for example case foo; in **nil then true; end
    traverses all nodes
  for example case foo; in {} then true; end
    traverses all nodes
  for example m "#{}#{()}"
    traverses all nodes
  for example f{ |a, b,| }
    traverses all nodes
  for example fun (f bar)
    traverses all nodes

RuboCop::AST::IntNode
  #sign?
    explicit negative int
      is expected to be sign
    explicit positive int
      is expected to be sign
  .new
    is expected to be a kind of RuboCop::AST::IntNode
  #value
    is expected to eq 10

RuboCop::AST::NodePattern
  wildcards
    unnamed wildcards
      within a sequence with other patterns intervening
        is expected to match code :@abc and s(:int, 22)
      within a sequence
        is expected to match code nil and :Const
      at the root level
        is expected to match code s(:sclass,
  s(:self),
  s(:def, :something,
    s(:args),
    s(:int, 1))) and :freeze
      negated
        behaves like nonmatching
          doesn't match
      in head position of a sequence
        is expected to match code s(:int, 1), :+, and s(:send, nil, :a)
    named wildcards
      in head position of a sequence
        is expected to match code s(:int, 1), :+, and s(:send, nil, :a)
      within a sequence
        with values which cannot be unified
          behaves like nonmatching
            doesn't match
        with values which can be unified
          is expected to match code s(:int, 5), :+, and s(:int, 5)
        unifying the node type with an argument
          is expected to match code s(:send, nil, :obj) and :send
      within a union
        with a preceding unifying constraint
          that can not be unified
            behaves like nonmatching
              doesn't match
          matching a branch
            is expected to match code s(:int, 2) and s(:array,
  s(:int, 2),
  s(:int, 1))
        confined to the union
          without unification
            is expected to match code s(:int, 2) and s(:int, 1)
          with partial unification
            matching the unified branch
              is expected to match code s(:int, 5) and s(:int, 5)
            that can not be unified
              behaves like nonmatching
                doesn't match
            matching the free branch
              is expected to match code s(:int, 2) and s(:int, 1)
        with a succeeding unifying constraint
          with all branches with the wildcard
            that can not be unified
              behaves like nonmatching
                doesn't match
            matching the first branch
              is expected to match code s(:array,
  s(:int, 1),
  s(:int, 2)) and s(:int, 2)
            matching another branch
              is expected to match code s(:array,
  s(:int, 2),
  s(:int, 1)) and s(:int, 2)
          with branches without the wildcard
            encountered first
              behaves like invalid
                is invalid
            encountered after
              behaves like invalid
                is invalid
      at the root level
        is expected to match code s(:sclass,
  s(:self),
  s(:def, :something,
    s(:args),
    s(:int, 1))) and :freeze
      within a sequence with other patterns intervening
        is expected to match code :@abc and s(:int, 22)
  captures on a wildcard
    at the root level
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    in head position in a sequence against nil (bug #5470)
      behaves like nonmatching
        doesn't match
    in a nested sequence
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    in non-head position in a sequence
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    nested in any child
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    in head position in a sequence
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    in head position in a sequence against literal (bug #5470)
      behaves like nonmatching
        doesn't match
  funcalls
    with multiple arguments
      is expected to match code s(:str, "c"), "a", and "d"
    with one argument
      is expected to match code s(:str, "foo") and "foo"
    without extra arguments
      is expected to match code :a and s(:int, 1)
  nil
    against a node pattern (bug #5470)
      behaves like nonmatching
        doesn't match
    nil value in AST, use nil? method
      is expected to match code nil and :foo
    nil literals
      is expected to match code
    nil value in AST
      behaves like nonmatching
        doesn't match
  in any order
    with a captured ellipsis
      nested
        behaves like multiple capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
      matching non sequential children
        behaves like single capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      matching all children
        behaves like single capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
    captured
      without ellipsis
        behaves like single capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
    with an ellipsis
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    invalid
      with an ellipsis inside and outside
        behaves like multiple capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
      containing ellipsis not at the end
        behaves like invalid
          is invalid
      nested
        behaves like invalid
          is invalid
      doubled with ellipsis
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      at the beginning of a sequence
        behaves like invalid
          is invalid
      doubled with ellipsis in wrong order
        behaves like nonmatching
          doesn't match
    without ellipsis
      with matching children
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      with too few children
        behaves like nonmatching
          doesn't match
      with too many children
        behaves like nonmatching
          doesn't match
    doubled
      separated by an ellipsis
        behaves like multiple capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
      separated by fixed argument
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
  sequence with trailing ...
    on a node with the same type and exact number of children
      is expected to match code s(:int, 1) and :blah
    on a node with non-matching children
      behaves like nonmatching
        doesn't match
    on a node with a different type
      behaves like nonmatching
        doesn't match
    on a node with the same type and more children
      with 2 children more
        is expected to match code s(:int, 1), :blah, s(:int, 1), and s(:sym, :something)
      with 1 child more
        is expected to match code s(:int, 1), :blah, and s(:int, 1)
    on a node with the same type and fewer children
      behaves like nonmatching
        doesn't match
    on a node with fewer children, with a wildcard preceding
      behaves like nonmatching
        doesn't match
  captures which also perform a match
    on a set
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    on []
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    on a node type
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    on a literal
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    when nested
      behaves like multiple capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    on a sequence
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
  caret (ascend)
    using unification to match self within parent
      with self in the right position
        is expected to match code 2
      with self in the wrong position
        behaves like nonmatching
          doesn't match
    used with a node type
      which doesn't match
        behaves like nonmatching
          doesn't match
      which matches
        is expected to match code 1
    inside a union
      is expected to match code "abc"
    inside an intersection
      is expected to match code 1
    within sequence
      in head
        is expected to match code 1
        of a sequence
          is expected to match code 1
      not in head
        is expected to match code s(:int, 1) and :inc
        of a sequence
          is expected to match code s(:int, 1) and :inc
    repeated twice
      is expected to match code 1
  regexp
    matches symbols or strings
  descend
    with a match multiple levels, depth first
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with an immediate match
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    without match
      behaves like nonmatching
        doesn't match
    with a literal match
      is expected to match code s(:int, 1) and s(:array,
  s(:array,
    s(:int, 2),
    s(:int, 3),
    s(:array,
      s(:array,
        s(:int, 5)))),
  s(:int, 4))
    nested
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
  repeated
    using *
      behaves like repeated pattern
        at beginning of sequence
          behaves like invalid
            is invalid
        with an ellipsis in the same sequence
          is expected to match code "[:hello, 1, 2, 3]"
        with one match
          behaves like single capture
            yields captured value(s) and returns true if there is a block
            returns captured values if there is no block
      nested with multiple subcaptures
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      with multiple subcaptures
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      without capture
        is expected to match code s(:sym, :hello), s(:int, 1), s(:int, 2), and s(:int, 3)
      with no match
        behaves like nonmatching
          doesn't match
      with matching children
        behaves like single capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      with zero match
        behaves like single capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
    using ?
      behaves like repeated pattern
        with an ellipsis in the same sequence
          is expected to match code "[:hello, 1, 2, 3]"
        with one match
          behaves like single capture
            returns captured values if there is no block
            yields captured value(s) and returns true if there is a block
        at beginning of sequence
          behaves like invalid
            is invalid
      with too many matching children
        behaves like nonmatching
          doesn't match
      with zero match
        behaves like single capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
    using +
      with zero match
        behaves like nonmatching
          doesn't match
      behaves like repeated pattern
        with an ellipsis in the same sequence
          is expected to match code "[:hello, 1, 2, 3]"
        with one match
          behaves like single capture
            yields captured value(s) and returns true if there is a block
            returns captured values if there is no block
        at beginning of sequence
          behaves like invalid
            is invalid
      with matching children
        behaves like single capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
  captures within union
    on simple subpatterns
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with complex nesting
      behaves like multiple capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with a different number of captures in each branch
      behaves like invalid
        is invalid
    within nested sequences
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
  unions
    nested inside a sequence
      is expected to match code s(:const, nil, :Const) and :method
    variadic
      multiple
        works for complex cases
      with variadic terms
        works for cases with variadic terms before and after union
        works for cases with fixed arity before and after union
        works for cases with variadic terms after union
      with fixed terms
        works for cases with variadic terms after union
        works for cases with variadic terms before and after union
        works for cases with fixed arity before and after union
    at the top level
      containing symbol literals
        when the AST does not have a matching symbol
          behaves like nonmatching
            doesn't match
        when the AST has a matching symbol
          is expected to match code s(:send, nil, :obj) and :b
      containing string literals
        is expected to match code s(:str, "a") and :upcase
      containing multiple []
        on a node which meets all requirements of the first []
          is expected to match code 3
        on a node which meets some requirements but not all
          behaves like nonmatching
            doesn't match
        on a node which meets all requirements of the second []
          is expected to match code 2.4
      containing mixed node and literals
        is expected to match code nil and :obj
      containing integer literals
        is expected to match code s(:int, 10) and :abs
    with a nested sequence
      is expected to match code s(:const, nil, :Const) and :method
  commas
    with commas randomly strewn around
      behaves like invalid
        is invalid
  node type
    for a child
      on a child litteral
        behaves like nonmatching
          doesn't match
      on a child with a different type
        behaves like nonmatching
          doesn't match
      on a child with the same type
        is expected to match code s(:send, nil, :foo) and :bar
    in seq head
      on a node with the same type
        is expected to match code s(:ivar, :@ivar), :+, and s(:int, 2)
      on a child with a different type
        behaves like nonmatching
          doesn't match
  bad syntax
    with variadic unions where not supported
      behaves like invalid
        is invalid
    with unmatched opening paren
      behaves like invalid
        is invalid
    with empty intersection
      behaves like invalid
        is invalid
    with unmatched opening curly
      behaves like invalid
        is invalid
    with unmatched opening paren and `...`
      behaves like invalid
        is invalid
    with unmatched closing paren
      behaves like invalid
        is invalid
    with unsupported subsequence in seq head within union
      behaves like invalid
        is invalid
    with negated ellipsis
      behaves like invalid
        is invalid
    with doubled ellipsis
      is expected to match code "foo"
    with unmatched closing curly
      behaves like invalid
        is invalid
    with empty union subsequence in seq head
      behaves like invalid
        is invalid
    with empty union
      behaves like invalid
        is invalid
    with empty parentheses
      behaves like invalid
        is invalid
    with doubled comma in arg list
      behaves like invalid
        is invalid
    with negated closing paren
      behaves like invalid
        is invalid
    with negated closing curly
      behaves like invalid
        is invalid
    with leading comma in arg list
      behaves like invalid
        is invalid
  bare node type
    marshal compatibility
      is expected to match code s(:send, nil, :obj) and :method
    on a node with the same type
      is expected to match code s(:send, nil, :obj) and :method
    #dup
      is expected to match code s(:send, nil, :obj) and :method
    on a node with a different type
      behaves like nonmatching
        doesn't match
    yaml compatibility
      is expected to match code s(:send, nil, :obj) and :method
    #==
      returns true iff the patterns are similar
    #to_s
      is instructive
    #pattern
      returns the pattern
    on a node with a matching, hyphenated type
      is expected to match code s(:lvasgn, :a), :+, and s(:int, 1)
  simple sequence
    on a node with too many children
      behaves like nonmatching
        doesn't match
    with a nested sequence in non-head position
      is expected to match code s(:send,
  s(:send, nil, :obj), :a) and :b
    with a nested sequence in head position
      behaves like invalid
        is invalid
    on a node with the same type and non-matching children
      with non-matching receiver type
        behaves like nonmatching
          doesn't match
      with non-matching selector
        behaves like nonmatching
          doesn't match
    on a node with a different type
      behaves like nonmatching
        doesn't match
    on a node with the same type and matching children
      is expected to match code s(:int, 1), :+, and s(:int, 1)
  literals
    symbol literals
      is expected to match code :foo
    bare literal
      on a matching literal
        is expected to match code :bar
      on a node
        behaves like nonmatching
          doesn't match
    negative float literals
      is expected to match code -2.5
    positive float literals
      is expected to match code 1.0
    double quoted string literals
      is expected to match code "foo"
    single quoted string literals
      is expected to match code "foo"
    negative integer literals
      is expected to match code -100
  comments
    behaves like single capture
      yields captured value(s) and returns true if there is a block
      returns captured values if there is no block
  negation
    on a string
      with a matching string
        behaves like nonmatching
          doesn't match
      with a non-matching symbol
        is expected to match code s(:str, "bar") and :upcase
    on a symbol
      with a non-matching symbol, but too many children
        behaves like nonmatching
          doesn't match
      with a non-matching symbol
        is expected to match code s(:send, nil, :obj) and :xyz
      with a matching symbol
        behaves like nonmatching
          doesn't match
    on a set
      with a matching value
        behaves like nonmatching
          doesn't match
      with a non-matching value
        is expected to match code :@a and s(:int, 3)
    when nested in complex ways
      with (send str :<< str)
        behaves like nonmatching
          doesn't match
      with (send str :+ (send str :to_i))
        is expected to match code s(:str, "abc"), :+, and s(:send,
  s(:str, "1"), :to_i)
      with (send int :- int)
        is expected to match code s(:int, 1), :-, and s(:int, 1)
    on a sequence
      with a node of different type
        is expected to match code :@@a and s(:int, 1)
      with a matching node
        behaves like nonmatching
          doesn't match
      with a node with non-matching children
        is expected to match code :@b and s(:int, 1)
    on square brackets
      with a node which meets all requirements of []
        behaves like nonmatching
          doesn't match
      with a node which meets only 1 requirement of []
        is expected to match code 1
  predicates
    when captured
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    at head position of a sequence
      is expected to match code s(:int, 1) and :inc
    applied to an integer for which the predicate is false
      behaves like nonmatching
        doesn't match
    in root position
      is expected to match code s(:int, 1) and :inc
      with name containing a numeral
        is expected to match code s(:int, 1) and :inc
    when negated
      is expected to match code s(:int, 1) and :inc
    when in last-child position, but all children have already been matched
      behaves like nonmatching
        doesn't match
    with a named argument
      for which the predicate is false
        behaves like nonmatching
          doesn't match
      when not given
        raises an error
      for which the predicate is true
        is expected to match code s(:send,
  s(:int, 1), :+,
  s(:int, 2)) and {:param=>1}
      with extra arguments
        raises an error
    with a constant argument
      for which the predicate is false
        behaves like nonmatching
          doesn't match
      for which the predicate is true
        is expected to match code s(:int, 1), :+, and s(:int, 2)
    applied to an integer for which the predicate is true
      is expected to match code s(:int, 1) and :inc
    with one extra argument
      for which the predicate is false
        behaves like nonmatching
          doesn't match
      for which the predicate is true
        is expected to match code s(:send,
  s(:int, 1), :+,
  s(:int, 2)) and 1
    with an expression argument
      for which the predicate is false
        behaves like nonmatching
          doesn't match
      for which the predicate is true
        is expected to match code s(:int, 2), :+, and s(:float, 2.0)
    with multiple arguments
      for which the predicate is false
        behaves like nonmatching
          doesn't match
      for which the predicate is true
        is expected to match code s(:str, "c"), "a", and "d"
  captures on ...
    after a child
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with a remaining capture at the end
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    at the very beginning of a sequence
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with a remaining sequence at the end
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with a remaining node type at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with remaining patterns at the end
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with a remaining wildcard at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining [] at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining set at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining literal at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with no remaining pattern at the end
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
  .descend
    yields all children depth first
    yields the given argument if it is not a Node
  params
    when negated, with a matching value
      behaves like nonmatching
        doesn't match
    in root position
      is expected to match code s(:int, 10) and s(:int, 10)
      in root position
        is expected to match code s(:int, 10) and #<Object:0xf458d12c>
    when negated, with a nonmatching value
      is expected to match code s(:const,
  s(:const, nil, :Namespace), :B) and :A
    without explicit number
      is expected to match code s(:const,
  s(:const, nil, :Namespace), :A), :A, and s(:const, nil, :Namespace)
    when preceded by ...
      is expected to match code s(:send,
  s(:int, 1), :+,
  s(:int, 10)) and s(:int, 10)
    when captured
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    param number zero
      in a position which matches original target node
        is expected to match code 1
      in a position which does not match original target node
        behaves like nonmatching
          doesn't match
    when inside a union, with a matching value
      is expected to match code s(:int, 10) and 10
    when inside an intersection
      is expected to match code s(:int, 20), 10, and 20
    as named parameters
      when provided as argument to match
        is expected to match code s(:int, 10) and {:foo=>#<Object:0xf44eca74>}
      when not provided
        raises an ArgumentError
      when extra are provided
        raises an ArgumentError
    when inside a union, with a nonmatching value
      behaves like nonmatching
        doesn't match
    in a nested sequence
      is expected to match code s(:send,
  s(:send,
    s(:int, 5), :dec), :inc), :inc, and :dec
    when preceded by $...
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
  ellipsis
    preceding multiple captures
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a nested sequence at the end, but no remaining child
      behaves like nonmatching
        doesn't match
    with a wildcard at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
    preceding a capture
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a set at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
    at the very beginning of a sequence
      is expected to match code s(:int, 10), :*, and s(:int, 1)
    with a nodetype at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
    with [] at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
  macros
    with a pattern with a constant
      is expected to match code :hello
      when the value is not in the set
        behaves like nonmatching
          doesn't match
    with a pattern with a namespaced call
      is expected to match code :hello
      when the value is not in the set
        behaves like nonmatching
          doesn't match
    with a pattern with captures
      def_node_matcher
        when it errors
          raises an error with the right location
        when called on matching code
          is expected to eq :hello
        when called on non-matching code
          behaves like nonmatching
            doesn't match
      def_node_search
        with a predicate name
          when called on matching code
            is expected to match code nil, :foo, s(:sym, :hello), and s(:sym, :world)
          when called on non-matching code
            behaves like nonmatching
              doesn't match
          when it errors
            raises an error with the right location
        without a predicate name
          when called on matching code
            returns an enumerator yielding the captures
            when the pattern contains keyword_params
              returns an enumerator yielding the captures
              when helper is called with default keyword_params
                is overridden when calling the matcher
                and no value is given to the matcher
                  uses the defaults
                some defaults are not params
                  raises an error
          when it errors
            raises an error with the right location
          when called on non-matching code
            returns an enumerator yielding nothing
    with a pattern without captures
      def_node_search
        returns the method name
        with a predicate name
          when it errors
            raises an error with the right location
          when called on matching code
            is expected to match code nil, :foo, s(:sym, :hello), and s(:sym, :world)
          when called on non-matching code
            behaves like nonmatching
              doesn't match
        without a predicate name
          when it errors
            raises an error with the right location
          when called on matching code
            returns an enumerator yielding the matches
          when called on non-matching code
            returns an enumerator yielding nothing
      def_node_matcher
        returns the method name
        when it errors
          raises an error with the right location
        when called on non-matching code
          behaves like nonmatching
            doesn't match
        when called on matching code
          is expected to match code :hello

RuboCop::AST::RegexpNode
  #slash_literal?
    with %r{-delimiters
      is expected not to be slash literal
    with multi-line %r{-delimiters
      is expected not to be slash literal
    with %r<-delimiters
      is expected not to be slash literal
    with %r/-delimiters
      is expected not to be slash literal
    with /-delimiters
      is expected to be slash literal
  #multiline_mode?
    with only m option
      is expected to be multiline mode
    with no options
      is expected not to be multiline mode
    with other options
      is expected not to be multiline mode
    with m and other options
      is expected to be multiline mode
  .new
    is expected to be a kind of RuboCop::AST::RegexpNode
  #to_regexp
    with a regexp with option
      is expected to eq /.+/mix
    with an empty regexp
      is expected to eq //
    with a multi-line regexp without option
      is expected to eq /
.+
/
    with a regexp with an "n" option
      is expected to eq "/abc/n"
    with a regexp with an "u" option
      is expected to eq "/abc/"
    with a regexp without option
      is expected to eq /.+/
    with a regexp with an "o" option
      is expected to eq "/abc/i"
    with a multi-line regexp with option
      is expected to eq /
.+
/ix
    with an empty regexp with option
      is expected to eq //ix
  #options
    with an empty regexp
      is expected to eq 0
    with a regexp with "o" option
      is expected to eq 0
    with a regexp with multiple options
      is expected to eq 3
    with a regexp without option
      is expected to eq 0
    with a regexp with single option
      is expected to eq 1
  #interpolation?
    with regexp quote
      is expected to be interpolation
    with no interpolation returns false
      is expected not to be interpolation
    with direct variable interpoation
      is expected to be interpolation
  #no_encoding?
    with only n option
      is expected to be no encoding
    with no options
      is expected not to be no encoding
    with n and other options
      is expected to be no encoding
    with other options
      is expected not to be no encoding
  #percent_r_literal?
    with multi-line %r{-delimiters
      is expected to be percent r literal
    with %r{-delimiters
      is expected to be percent r literal
    with %r/-delimiters
      is expected to be percent r literal
    with %r<-delimiters
      is expected to be percent r literal
    with /-delimiters
      is expected not to be percent r literal
  #fixed_encoding?
    with only u option
      is expected to be fixed encoding
    with u and other options
      is expected to be fixed encoding
    with other options
      is expected not to be fixed encoding
    with no options
      is expected not to be fixed encoding
  #ignore_case?
    with only i option
      is expected to be ignore case
    with i and other options
      is expected to be ignore case
    with other options
      is expected not to be ignore case
    with no options
      is expected not to be ignore case
  #extended?
    with no options
      is expected not to be extended
    with x and other options
      is expected to be extended
    with other options
      is expected not to be extended
    with only x option
      is expected to be extended
  #regopt
    with a regexp without option
      is expected to be regopt type
      is expected to be empty
    with a regexp with option
      is expected to be regopt type
      is expected to eq [:i, :m, :x]
    with a multi-line regexp without option
      is expected to be empty
      is expected to be regopt type
    with a multi-line regexp with option
      is expected to eq [:i, :m, :x]
      is expected to be regopt type
    with an empty regexp
      is expected to be empty
      is expected to be regopt type
    with an empty regexp with option
      is expected to eq [:i, :x]
      is expected to be regopt type
  #content
    with a regexp with option
      is expected to eq ".+"
    with an empty regexp with option
      is expected to eq ""
    with a regexp without option
      is expected to eq ".+"
    with a multi-line regexp with option
      is expected to eq "\n.+\n"
    with an empty regexp
      is expected to eq ""
    with a multi-line regexp without option
      is expected to eq "\n.+\n"
  #delimiter?
    with %r<-delimiters
      is expected not to be delimiter "}"
      is expected not to be delimiter "r"
      is expected to be delimiter ">"
      is expected not to be delimiter "%"
      is expected to be delimiter "<"
      is expected not to be delimiter "%r{"
      is expected not to be delimiter "%r/"
      is expected not to be delimiter "{"
      is expected not to be delimiter "%r"
      is expected not to be delimiter "%r<"
      is expected not to be delimiter "/"
    with /-delimiters
      is expected to be delimiter "/"
      is expected not to be delimiter "{"
    with %r{-delimiters
      is expected not to be delimiter "%r"
      is expected not to be delimiter "%r{"
      is expected to be delimiter "}"
      is expected not to be delimiter "/"
      is expected to be delimiter "{"
      is expected not to be delimiter "r"
      is expected not to be delimiter "%"
      is expected not to be delimiter "%r/"
    with multi-line %r{-delimiters
      is expected not to be delimiter "%r"
      is expected not to be delimiter "%r{"
      is expected to be delimiter "}"
      is expected not to be delimiter "/"
      is expected not to be delimiter "%"
      is expected to be delimiter "{"
      is expected not to be delimiter "r"
      is expected not to be delimiter "%r/"
    with %r/-delimiters
      is expected not to be delimiter "r"
      is expected not to be delimiter "%"
      is expected not to be delimiter "}"
      is expected not to be delimiter "%r"
      is expected not to be delimiter "{"
      is expected not to be delimiter "%r/"
      is expected to be delimiter "/"
  #single_interpolation?
    with no options
      is expected not to be single interpolation
    with only o option
      is expected to be single interpolation
    with o and other options
      is expected to be single interpolation
    with other options
      is expected not to be single interpolation
  #delimiters
    with %r{-delimiters
      is expected to eq ["{", "}"]
    with /-delimiters
      is expected to eq ["/", "/"]
    with multi-line %r{-delimiters
      is expected to eq ["{", "}"]
    with %r/-delimiters
      is expected to eq ["/", "/"]
    with %r<-delimiters
      is expected to eq ["<", ">"]

Set#===
  tests for inclusion

RuboCop::AST::AndAsgnNode
  #assignment_node
    is expected to be a kind of RuboCop::AST::AsgnNode
  #expression
    is expected to eq s(:send, nil, :value)
  #name
    is expected to eq :var
  .new
    is expected to be a kind of RuboCop::AST::AndAsgnNode
  #operator
    is expected to eq :"&&"

RuboCop::AST::WhenNode
  .new
    is expected to be a kind of RuboCop::AST::WhenNode
  #conditions
    with a single condition
      is expected to eq 1
      is expected to all be literal
    with a multiple conditions
      is expected to eq 3
      is expected to all be literal
  #then?
    without a then keyword
      is expected not to be then
    with a then keyword
      is expected to be then
  #branch_index
    is expected to eq 2
    is expected to eq 0
    is expected to eq 1
  #body
    without a then keyword
      is expected to be array type
    with a then keyword
      is expected to be sym type
  #each_condition
    when passed a block
      yields all the conditions
    when not passed a block
      is expected to be a kind of Enumerator

RuboCop::AST::ArgNode
  .new
    with a keyword argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a block
      is expected to be a kind of RuboCop::AST::ArgNode
    with a shadow argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with an optional argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a block argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with argument forwarding
      with Ruby >= 2.7
        is expected to be a kind of RuboCop::AST::ArgNode
      with Ruby >= 3.0
        is expected to be a kind of RuboCop::AST::ArgNode
    with an optional keyword argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a double splatted argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a splatted argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a method definition
      is expected to be a kind of RuboCop::AST::ArgNode
    with a lambda literal
      is expected to be a kind of RuboCop::AST::ArgNode
  #default_value
    with a block
      is expected to be nil
    with a splatted argument
      is expected to be nil
    with an optional keyword argument
      is expected to eq s(:int, 42)
    with argument forwarding
      with Ruby >= 2.7
        is expected to be nil
      with Ruby >= 3.0
        is expected to be nil
    with a block argument
      is expected to be nil
    with an optional argument
      is expected to eq s(:int, 42)
    with a shadow argument
      is expected to be nil
    with a regular argument
      is expected to be nil
    with a double splatted argument
      is expected to be nil
  #name
    with a nameless splatted argument
      is expected to be nil
    with a shadow argument
      is expected to eq :x
    with a regular argument
      is expected to eq :x
    with argument forwarding
      with Ruby >= 2.7
        is expected to be nil
      with Ruby >= 3.0
        is expected to be nil
    with a keyword argument
      is expected to eq :x
    with an optional argument
      is expected to eq :x
    with a block argument
      is expected to eq :x
    with a double splatted argument
      is expected to eq :x
    with a splatted argument
      is expected to eq :x
    with a block
      is expected to eq :x
    with a nameless double splatted argument
      is expected to be nil
    with an optional keyword argument
      is expected to eq :x
  #default?
    with a double splatted argument
      is expected to equal false
    with an optional keyword argument
      is expected to equal true
    with a shadow argument
      is expected to equal false
    with argument forwarding
      with Ruby >= 3.0
        is expected to equal false
      with Ruby >= 2.7
        is expected to equal false
    with a splatted argument
      is expected to equal false
    with a regular argument
      is expected to equal false
    with an optional argument
      is expected to equal true
    with a block
      is expected to equal false
    with a block argument
      is expected to equal false

RuboCop::AST::InPatternNode
  when using Ruby 2.7 or newer
    #pattern
      with an array pattern
        is expected to be array pattern type
      with a hash pattern
        is expected to be hash pattern type
      with a value pattern
        is expected to be int type
      with an alternative pattern
        is expected to be match alt type
      with a pin operator
        is expected to be pin type
      with a variable pattern
        is expected to be match var type
      with an as pattern
        is expected to be match as type
    .new
      is expected to be a kind of RuboCop::AST::InPatternNode
    #branch_index
      is expected to eq 0
      is expected to eq 2
      is expected to eq 1
    #then?
      without a then keyword
        is expected not to be then
      with a then keyword
        is expected to be then
    #body
      with a then keyword
        is expected to be sym type
      without a then keyword
        is expected to be array type

RuboCop::AST::DstrNode
  #value
    with a multiline string
      is expected to eq "this is a multiline string"
    with interpolation
      is expected to eq "foo \#{bar} baz"
    with implicit concatenation
      is expected to eq "foo bar baz"

RuboCop::AST::EnsureNode
  #body
    is expected to be sym type
  .new
    is expected to be a kind of RuboCop::AST::EnsureNode

RuboCop::AST::ForwardArgsNode
  when using Ruby 2.7 or newer
    #to_a
      is expected to contain exactly (be forward arg type)

RuboCop::AST::Ext::Range
  #line_span
    returns the range of lines a range occupies
    accepts an `exclude_end` keyword argument

RuboCop::AST::NodePattern::Sets
  is expected not to eq "::RuboCop::AST::NodePattern::Sets::SET_1_2_3_ETC_2"
  is expected to eq "::RuboCop::AST::NodePattern::Sets::SET_1_2_3_ETC"
  is expected to eq "::RuboCop::AST::NodePattern::Sets::SET_1_2_3_ETC"
  creates a constant with the right value

RuboCop::AST::ResbodyNode
  .new
    is expected to be a kind of RuboCop::AST::ResbodyNode
  #exceptions
    with a single exception
      is expected to eq 1
      is expected to all be const type
    with multiple exceptions
      is expected to all be const type
      is expected to eq 2
    without exception
      is expected to eq 0
  #body
    is expected to be sym type
  #branch_index
    is expected to eq 1
    is expected to eq 2
    is expected to eq 0
  #exception_variable
    when an exception variable is not given
      is expected to be nil
    for an explicit rescue
      is expected to eq "ex"
    for an implicit rescue
      is expected to eq "ex"

RuboCop::AST::AliasNode
  .new
    is expected to be a kind of RuboCop::AST::AliasNode
  #old_identifier
    is expected to be sym type
    is expected to eq :bar
  #new_identifier
    is expected to be sym type
    is expected to eq :foo

RuboCop::AST::IfNode
  #else?
    without an else statement
      is expected not to be elsif
    with an elsif statement
      is expected to be else
  #if_branch
    with a ternary operator
      is expected to be sym type
    with an if statement
      is expected to be sym type
    with an unless statement
      is expected to be sym type
  #nested_conditional?
    with nested conditionals in elsif clause
      is expected to be nested conditional
    with no nested conditionals
      is expected not to be nested conditional
    with nested ternary operators
      when nested in the truthy branch
        is expected to be nested conditional
      when nested in the falsey branch
        is expected to be nested conditional
    with nested conditionals in if clause
      is expected to be nested conditional
    with nested conditionals in else clause
      is expected to be nested conditional
  #branches
    with a ternary operator
      is expected to all be literal
      is expected to eq 2
    with an elsif statement
      is expected to all be literal
      is expected to eq 3
    with an unless statement
      is expected to all be literal
      is expected to eq 1
    with an else statement
      is expected to eq 2
      is expected to all be literal
    with an if statement
      is expected to eq 1
      is expected to all be literal
  .new
    with a regular if statement
      is expected to be a kind of RuboCop::AST::IfNode
    with a modifier statement
      is expected to be a kind of RuboCop::AST::IfNode
    with a ternary operator
      is expected to be a kind of RuboCop::AST::IfNode
  #if?
    with an unless statement
      is expected not to be if
    with an if statement
      is expected to be if
    with a ternary operator
      is expected not to be if
  #modifier_form?
    with a non-modifier if statement
      is expected not to be modifier form
    with a ternary operator
      is expected not to be modifier form
    with a modifier unless statement
      is expected to be modifier form
    with a modifier if statement
      is expected to be modifier form
    with a non-modifier unless statement
      is expected not to be modifier form
  #ternary?
    with an if statement
      is expected not to be ternary
    with a ternary operator
      is expected to be ternary
    with an unless statement
      is expected not to be ternary
  #inverse_keyword?
    with a ternary operator
      is expected to eq ""
    with an unless statement
      is expected to eq "if"
    with an if statement
      is expected to eq "unless"
  #keyword
    with an if statement
      is expected to eq "if"
    with an unless statement
      is expected to eq "unless"
    with a ternary operator
      is expected to eq ""
  #elsif?
    without an elsif statement
      is expected not to be elsif
    with an elsif statement
      is expected to be elsif
    with an if statement comtaining an elsif
      is expected not to be elsif
  #elsif_conditional?
    with nested conditionals in else clause
      is expected not to be elsif conditional
    with multiple elsif conditionals
      is expected to be elsif conditional
    with nested conditionals in if clause
      is expected not to be elsif conditional
    with one elsif conditional
      is expected to be elsif conditional
    with nested ternary operators
      when nested in the falsey branch
        is expected not to be elsif conditional
      when nested in the truthy branch
        is expected not to be elsif conditional
  #else_branch
    with an if statement
      is expected to be int type
    with a ternary operator
      is expected to be int type
    with an unless statement
      is expected to be int type
  #unless?
    with an unless statement
      is expected to be unless
    with a ternary operator
      is expected not to be unless
    with an if statement
      is expected not to be unless
  #each_branch
    when not passed a block
      is expected to be a kind of Enumerator
    when passed a block
      yields all the branches

RuboCop::AST::ArgsNode
  .new
    with a block
      is expected to be a kind of RuboCop::AST::ArgsNode
    with a method definition
      is expected to be a kind of RuboCop::AST::ArgsNode
    with a lambda literal
      is expected to be a kind of RuboCop::AST::ArgsNode
  #empty_and_without_delimiters?
    with empty arguments
      with a lambda literal
        is expected to equal true
      with a block
        is expected to equal true
      with a method definition
        is expected to equal true
    with arguments
      with a method definition
        is expected to equal false
      with a lambda literal
        is expected to equal false
    with delimiters
      with a method definition
        is expected to equal false
      with a block
        is expected to equal false
      with a lambda literal
        is expected to equal false
  #argument_list
    is expected to eq [s(:arg, :a), s(:optarg, :b,
  s(:int, 42)), s(:arg, :c), s(:restarg, :d), s(:kwarg, :e), s(:kwoptarg, :f,
  s(:int, 42)), s(:kwrestarg, :g), s(:blockarg, :h), s(:shadowarg, :i)]
    when using Ruby 2.7 or newer
      with argument forwarding
        is expected to eq [s(:forward_arg)]

RuboCop::AST::OrNode
  #operator
    with a semantic or node
      is expected to eq "or"
    with a logical or node
      is expected to eq "||"
  #logical_operator?
    with a semantic or node
      is expected not to be logical operator
    with a logical or node
      is expected to be logical operator
  #lhs
    with a logical or node
      is expected to be sym type
    with a semantic or node
      is expected to be sym type
  .new
    with a semantic or node
      is expected to be a kind of RuboCop::AST::OrNode
    with a logical or node
      is expected to be a kind of RuboCop::AST::OrNode
  #inverse_operator
    with a logical or node
      is expected to eq "&&"
    with a semantic or node
      is expected to eq "and"
  #alternate_operator
    with a logical or node
      is expected to eq "or"
    with a semantic or node
      is expected to eq "||"
  #semantic_operator?
    with a logical or node
      is expected not to be semantic operator
    with a semantic or node
      is expected to be semantic operator
  #rhs
    with a semantic or node
      is expected to be int type
    with a logical or node
      is expected to be int type

RuboCop::AST::CaseMatchNode
  when using Ruby 2.7 or newer
    .new
      is expected to be a kind of RuboCop::AST::CaseMatchNode
    #keyword
      is expected to eq "case"
    #each_in_pattern
      when not passed a block
        is expected to be a kind of Enumerator
      when passed a block
        yields all the conditions
    #else?
      without an else statement
        is expected not to be else
      with an else statement
        is expected to be else
    #in_pattern_branches
      is expected to all be in pattern type
      is expected to eq 3
    #branches
      when there is no else keyword
        returns only then when bodies
      when there is an else
        with else body
          returns all the bodies
        with empty else
          returns all the bodies
    #else_branch
      #else?
        with an else statement
          is expected to be sym type
        with an empty else statement
          is expected to be empty else type
        without an else statement
          is expected to be nil

RuboCop::AST::ProcessedSource
  #following_line
    returns source of line after token
  #lines
    contains lines as string without linefeed
    is an array
    has same number of elements as line count
  #comments
    is an array of comments
    when the source is invalid
      returns []
  #parser_error
    when the source could not be parsed due to encoding error
      returns the error
    when the source was properly parsed
      is nil
    when the source lacks encoding comment and is really utf-8 encoded but has been read as US-ASCII
      is nil
  #tokens
    has an array of tokens
  #tokens_within
    returns tokens for node
    accepts Node as an argument
    when heredoc as argument is present
      returns tokens for node after heredoc
      returns tokens for heredoc node
      returns tokens for node before heredoc
  #path
    is the path passed to .new
  #start_with?
    with blank source
      returns false
    with present source
      returns true when passed string that starts source
      returns false when passed string that does not start source
  #buffer
    is a source buffer
  #preceding_line
    returns source of line before token
  #[]
    when an index is passed
      returns the line
    when a range is passed
      returns the array of lines
    when start index and length are passed
      returns the array of lines
  valid_syntax?
    when the source itself is valid encoding but includes strange encoding literals that are accepted by MRI
      returns true
    when the source is completely valid
      returns true
    when the source is valid but has some warning diagnostics
      returns true
    when a line starts with an integer literal
      tokenizes the source correctly
    when the source is invalid
      returns false
    when the source could not be parsed due to encoding error
      returns false
  #ast
    is the root node of AST
  with heavily commented source
    #comment_at_line
      returns nil if line has no comment
      returns the comment at the given line number
    #each_comment
      yields all comments
    #contains_comment?
      provided source_range on line with comment
        is expected to equal true
      provided source_range on line without comment
        is expected to equal false
      provided source_range on comment line
        is expected to equal true
      provided a multiline source_range with at least one line with comment
        is expected to equal true
    #each_comment_in_lines
      yields the comments
    #line_with_comment?
      returns false for lines without comments
      returns true for lines with comments
    #comments_before_line
      returns comments on or before given line
    #find_comment
      yields correct comment
      yields nil when there is no match
  #last_token_of
    accepts Node as an argument
    returns last token for node
  token enumerables
    #find_token
      yields nil when there is no match
      yields correct token
    #each_token
      yields all tokens
  #first_token_of
    accepts Node as an argument
    returns first token for node
  .from_file
    raises a Errno::ENOENT when the file does not exist
    when the file exists
      returns an instance of ProcessedSource
      sets the file path to the instance's #path
  #file_path
    returns file path
  #blank?
    with source of no content
      returns true
    with source with content
      returns false

RuboCop::AST::SuperNode
  #block_argument?
    with mixed arguments
      is expected to be block argument
    with regular arguments
      is expected not to be block argument
    with a block argument
      is expected to be block argument
    with no arguments
      is expected not to be block argument
  #camel_case_method?
    is expected not to be camel case method
  #bang_method?
    is expected not to be bang method
  #block_literal?
    with a block argument
      is expected not to be block literal
    with a block literal
      is expected to be block literal
    with no block
      is expected not to be block literal
  #assignment_method?
    is expected not to be assignment method
  #self_receiver?
    is expected not to be self receiver
  #macro?
    is expected not to be macro
  #setter_method?
    is expected not to be setter method
  #splat_argument?
    with no arguments
      is expected not to be splat argument
    with mixed arguments
      is expected to be splat argument
    with regular arguments
      is expected not to be splat argument
    with a splat argument
      is expected to be splat argument
  #last_argument
    with no arguments
      is expected to be nil
    with a single literal argument
      is expected to be sym type
    with multiple mixed arguments
      is expected to be splat type
    with multiple literal arguments
      is expected to be sym type
    with a single splat argument
      is expected to be splat type
  #arguments
    with no arguments
      is expected to be empty
    with multiple mixed arguments
      is expected to eq 2
    with multiple literal arguments
      is expected to eq 2
    with a single literal argument
      is expected to eq 1
    with a single splat argument
      is expected to eq 1
  #double_colon?
    is expected not to be double colon
  #command?
    when argument is a string
      is expected to be command "super"
    when argument is a symbol
      is expected to be command :super
  #method_name
    is expected to eq :super
  #method?
    when message does not match
      when argument is a string
        is expected not to be method "foo"
      when argument is a symbol
        is expected not to be method :foo
    when message matches
      when argument is a symbol
        is expected to be method :super
      when argument is a string
        is expected to be method "super"
  #predicate_method?
    is expected not to be predicate method
  #parenthesized?
    with no arguments
      when using parentheses
        is expected to be parenthesized
      when not using parentheses
        is expected not to be parenthesized
    with arguments
      when using parentheses
        is expected to be parenthesized
      when not using parentheses
        is expected not to be parenthesized
  #receiver
    is expected to be nil
  .new
    with a zsuper node
      is expected to be a kind of RuboCop::AST::SuperNode
    with a super node
      is expected to be a kind of RuboCop::AST::SuperNode
  #implicit_call?
    is expected not to be implicit call
  #dot?
    is expected not to be dot
  #operator_method?
    is expected not to be operator method
  #first_argument
    with a single splat argument
      is expected to be splat type
    with multiple mixed arguments
      is expected to be sym type
    with multiple literal arguments
      is expected to be sym type
    with a single literal argument
      is expected to be sym type
    with no arguments
      is expected to be nil
  #block_node
    with a block argument
      is expected to be nil
    with no block
      is expected to be nil
    with a block literal
      is expected to be block type
  #comparison_method?
    is expected not to be comparison method
  #const_receiver?
    is expected not to be const receiver
  #arguments?
    with no arguments
      is expected not to be arguments
    with multiple literal arguments
      is expected to be arguments
    with a single splat argument
      is expected to be arguments
    with a single literal argument
      is expected to be arguments
    with multiple mixed arguments
      is expected to be arguments

RuboCop::AST::ForNode
  #do?
    with a do keyword
      is expected to be do
    without a do keyword
      is expected not to be do
  #post_condition_loop?
    is expected not to be post condition loop
  .new
    is expected to be a kind of RuboCop::AST::ForNode
  #collection
    is expected to be sym type
  #keyword
    is expected to eq "for"
  #variable
    is expected to be lvasgn type
  #body
    is expected to be sym type
  #void_context?
    without a do keyword
      is expected to be void context
    with a do keyword
      is expected to be void context
  #loop_keyword?
    is expected to be loop keyword

RuboCop::AST::AsgnNode
  #expression
    with a `lvasgn` node
      is expected to eq s(:send, nil, :value)
    with a `ivasgn` node
      is expected to eq s(:send, nil, :value)
    with a `cvasgn` node
      is expected to eq s(:send, nil, :value)
    with a `gvasgn` node
      is expected to eq s(:send, nil, :value)
  .new
    with a `ivasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
    with a `cvasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
    with a `lvasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
    with a `gvasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
  #name
    with a `gvasgn` node
      is expected to eq :$var
    with a `cvasgn` node
      is expected to eq :@@var
    with a `ivasgn` node
      is expected to eq :@var
    with a `lvasgn` node
      is expected to eq :var

RuboCop::AST::CaseNode
  #else?
    without an else statement
      is expected not to be else
    with an else statement
      is expected to be else
  #keyword
    is expected to eq "case"
  #else_branch
    #else?
      without an else statement
        is expected to be nil
      with an else statement
        is expected to be sym type
      with an empty else statement
        is expected to be nil
  #each_when
    when not passed a block
      is expected to be a kind of Enumerator
    when passed a block
      yields all the conditions
  #branches
    when there is no else keyword
      returns only then when bodies
    when there is an else
      returns all the bodies
      with an empty else
        returns all the bodies
    when compared to an IfNode
      returns the same
  .new
    is expected to be a kind of RuboCop::AST::CaseNode
  #when_branches
    is expected to eq 3
    is expected to all be when type

RuboCop::AST::LambdaNode
  #method_name
    is expected to eq :lambda
  #receiver
    is expected to be nil
  #arguments
    is expected to eq 2

RuboCop::AST::KeywordSplatNode
  #key_delta
    with alignment set to :left
      when using hash rocket delimiters
        when keyword splat is aligned
          is expected to eq 0
        when keyword splat is behind
          is expected to eq -2
        when keyword splat is ahead
          is expected to eq 2
        when keyword splat is on the same line
          is expected to eq 0
      when using colon delimiters
        when keyword splat is behind
          is expected to eq -2
        when keyword splat is on the same line
          is expected to eq 0
        when keyword splat is aligned
          is expected to eq 0
        when keyword splat is ahead
          is expected to eq 2
    with alignment set to :right
      when using hash rocket delimiters
        when keyword splat is ahead
          is expected to eq 0
        when keyword splat is behind
          is expected to eq 0
        when keyword splat is on the same line
          is expected to eq 0
        when keyword splat is aligned
          is expected to eq 0
      when using colon delimiters
        when keyword splat is on the same line
          is expected to eq 0
        when keyword splat is aligned
          is expected to eq 0
        when keyword splat is ahead
          is expected to eq 0
        when keyword splat is behind
          is expected to eq 0
  #operator
    is expected to eq "**"
  .new
    is expected to be a kind of RuboCop::AST::KeywordSplatNode
  #hash_rocket?
    is expected not to be hash rocket
  #value
    is expected to eq s(:kwsplat,
  s(:send, nil, :foo))
  #key
    is expected to eq s(:kwsplat,
  s(:send, nil, :foo))
  #colon?
    is expected not to be colon
  #same_line?
    when both pairs are on the same line
      is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
    when a multiline pair shares the same line
      is expected to be same line s(:pair,
  s(:sym, :a),
  s(:begin))
      is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
    when pairs are on separate lines
      is expected not to be same line s(:kwsplat,
  s(:send, nil, :foo))
  #value_delta
    when using colon delimiters
      when keyword splat is on the same line
        is expected to eq 0
      when keyword splat is left aligned
        is expected to eq 0
      when keyword splat is behind
        is expected to eq 0
      when keyword splat is ahead
        is expected to eq 0
    when using hash rocket delimiters
      when keyword splat is on the same line
        is expected to eq 0
      when keyword splat is ahead
        is expected to eq 0
      when keyword splat is left aligned
        is expected to eq 0
      when keyword splat is behind
        is expected to eq 0

RuboCop::AST::Token
  #line
    returns line of token
  type predicates
    #left_ref_bracket?
      returns true for left_ref_bracket tokens
      returns false for non left_ref_bracket tokens
    #left_bracket?
      returns false for non left_bracket tokens
      returns true for all left_bracket tokens
    #rescue_modifier?
      returns false for non rescue modifier tokens
      returns true for rescue modifier tokens
    #regexp_dots?
      returns true for regexp tokens
      returns false for non comma tokens
    #equals_sign?
      returns false for non equals sign tokens
      returns true for equals sign tokens
    #end?
      returns false for non end tokens
      returns true for end tokens
    with braces & parens
      #right_parens?
        returns true for right parens tokens
        returns false for non right parens tokens
      #right_curly_brace?
        returns false for non right brace tokens
        returns true for all right brace tokens
      #left_parens?
        returns true for left parens tokens
        returns false for non left parens tokens
      #left_brace?
        returns false for non left hash brace tokens
        returns true for left hash brace tokens
      #left_curly_brace?
        returns false for non left block brace tokens
        returns true for left block brace tokens
    #semicolon?
      returns false for non semicolon tokens
      returns true for semicolon tokens
    #new_line?
      returns false for non new line tokens
      returns true for new line tokens
    #right_bracket?
      returns false for non right_bracket tokens
      returns true for all right_bracket tokens
    #left_array_bracket?
      returns true for left_array_bracket tokens
      returns false for non left_array_bracket tokens
    #left_brace?
      returns false for non right_bracket tokens
      returns true for right_bracket tokens
    #comment?
      returns false for non comment tokens
      returns true for comment tokens
    #dot?
      returns false for non dot tokens
      returns true for dot tokens
    #comma?
      returns true for comma tokens
      returns false for non comma tokens
  #space_before
    returns truthy MatchData when there is a space before token
    returns nil when it is on the first line
    returns nil when there is not a space before token
  #column
    returns index of first char in token range on that line
  #to_s
    returns string of token data
  .from_parser_token
    sets parser token's range to rubocop token's pos
    sets parser token's type to rubocop token's type
    sets parser token's text to rubocop token's text
    returns a #to_s useful for debugging
  #end_pos
    returns index of last char in token range of entire source
  #space_after
    returns truthy MatchData when there is a space after token
    returns nil when there is not a space after token
  #begin_pos
    returns index of first char in token range of entire source

RuboCop::AST::Node
  #struct_constructor?
    ::Struct
      matches
    struct definition without block
      does not match
    struct definition with a block
      matches
  sibling_access
    returns trivial values for a root node
    for a single child
      returns the expected values
    for a node with siblings
      returns the expected values
  #parent_module_name
    when node on module
      is expected to eq "Foo"
    when node nested in an unknown block
      is expected to be nil
    when node on top level
      is expected to eq "Object"
    when node nested in a class << exp
      is expected to be nil
    when node on singleton class
      is expected to eq "Foo::#<Class:Foo>"
    when node on class in singleton class
      is expected to eq "Foo::#<Class:Foo>::Bar"
  #class_definition?
    with ::ClassName
      matches
    with inheritance
      matches
    namespaced class
      matches
    with Struct
      matches
      when using numbered parameter
        matches
    constant defined as Struct without block
      does not match
    with Class.new
      matches
      when using numbered parameter
        matches
    with object singleton class
      matches
    with self singleton class
      matches
    without inheritance
      matches
  #numeric_type?
    when string literal
      is true
    when rational literal
      is true
    when integer literal
      is true
    when complex literal whose imaginary part is a rational
      is true
    when float literal
      is true
    when complex literal
      is true
  #module_definition?
    namespaced modules
      matches
    prepend Module.new
      matches
    with Module.new
      matches
      when using numbered parameter
        matches
    with ::ModuleName
      matches
    nested modules
      matches
    using module keyword
      matches
    included module definition
      matches
  #pure?
    for a nested if
      where one branch contains a method call
        returns false
      where one branch contains an assignment statement
        returns false
      where the innermost descendants are local vars and literals
        returns true
    for an lvar assignment
      returns false
    for a hash literal
      which contains a method call
        returns false
      with only literal children
        returns true
    for an ivar assignment
      returns false
    for a regexp
      with options
        returns true
      with interpolated segments
        returns false
      with no interpolation
        returns true
    for a method call
      returns false
    for a gvar assignment
      returns false
    for an integer literal
      returns true
    for a class definition
      returns false
    for a module definition
      returns false
    for an array literal
      which contains a method call
        returns false
      with only literal children
        returns true
    for a cvar assignment
      returns false
  #recursive_basic_literal?
    behaves like non literal
      returns false for `/.#{some_method_call}/`
    behaves like literal
      returns true for `(false && true)`
    behaves like non literal
      returns false for `(x or false)`
    behaves like literal
      returns true for `false`
    behaves like literal
      returns true for `{ :a => 1, :b => 2 }`
    behaves like non literal
      returns false for `some_method_call(x, y)`
    behaves like literal
      returns true for `[1, 2, 3]`
    behaves like literal
      returns true for `1`
    behaves like non literal
      returns false for `some_method_call`
    behaves like non literal
      returns false for `{ :sym => some_method_call }`
    behaves like non literal
      returns false for `{ some_method_call => :sym }`
    behaves like literal
      returns true for `(false or true)`
    behaves like literal
      returns true for `(false <=> true)`
    behaves like non literal
      returns false for `%r{abx#{foo}}ixo`
    behaves like non literal
      returns false for `(x == false)`
    behaves like non literal
      returns false for `(x && false)`
    behaves like literal
      returns true for `'str'`
    behaves like literal
      returns true for `/./`
    behaves like non literal
      returns false for `[some_method_call]`
    behaves like literal
      returns true for `nil`
    behaves like literal
      returns true for `{ a: 1, b: 2 }`
    behaves like literal
      returns true for `"#{2}"`
    behaves like literal
      returns true for `(1)`
    behaves like literal
      returns true for `1.0`
    behaves like literal
      returns true for `%r{abx}ixo`
    behaves like literal
      returns true for `!true`
  #argument_type?
    method arguments
      returns true for all argument types
    block arguments
      returns true for all argument types
  #conditional?
    when `until` node
      is true
    when `if` node
      is true
    when post condition loop node
      is false
    when `case_match` node
      is true
    when `case` node
      is true
    when `while` node
      is true
  #value_used?
    within a module definition node
      is always true
    within a singleton class node
      is always true
    within an array literal
      at the top level
        is always false
      assigned to an ivar
        is always true
    within a while node
      is true only for the condition
    within a method call node
      is always true
    at the top level
      is false
    at the end of a block
      is always true
    within an if...else..end node
      nested in a method call
        is always true
      at the top level
        is true only for the condition
    within a class definition node
      is always true
  #class_constructor?
    class definition with a block
      matches
    class definition on outer scope
      matches
    class definition
      does not match
    module definition with a block
      matches

RuboCop::AST::ModuleNode
  #identifier
    is expected to be const type
  #body
    with a multi-expression body
      is expected to be begin type
    with a single expression body
      is expected to be send type
    with an empty body
      is expected to be nil
  .new
    is expected to be a kind of RuboCop::AST::ModuleNode

Changelog
  merges correctly
  parses correctly
  Changelog::Entry
    generates correct content

RuboCop::AST::NodePattern::Lexer
  provides tokens via next_token
  when given node types and constants
    distinguishes them
  with $type+
    is parsed as `$ int + x`
  when given a regexp /[abc]+\/()?/x
    round trips
  when given arithmetic symbols
    is parsed as `:&`
  when given a regexp /back\\slash/
    round trips
  when given a regexp ending with a backslash
    does not lexes it properly
  when given a regexp /test/
    round trips

RuboCop::AST::BreakNode
  behaves like wrapped arguments node
    #arguments
      with no arguments
        is expected to be empty
      with a single argument and braces
        is expected to eq 1
      with a single splat argument
        is expected to eq 1
      with multiple literal arguments
        is expected to eq 2
      with a single argument
        is expected to eq 1
      with no arguments and braces
        is expected to be empty
    .new
      without arguments
        is expected to be a kind of RuboCop::AST::BreakNode
      with arguments
        is expected to be a kind of RuboCop::AST::BreakNode

RuboCop::AST::HashNode
  #mixed_delimiters?
    when pairs are using different delimiters
      is expected to be mixed delimiters
    when all pairs are using a hash rocket delimiter
      is expected not to be mixed delimiters
    when all pairs are using a colon delimiter
      is expected not to be mixed delimiters
  #empty?
    with a hash containing a keyword splat
      is expected not to be empty
    with a hash containing pairs
      is expected not to be empty
    with an empty hash
      is expected to be empty
  #keys
    with a hash with string keys
      is expected to all be str type
      is expected to eq 2
    with an empty hash
      is expected to be empty
    with a hash with symbol keys
      is expected to eq 3
      is expected to all be sym type
  .new
    is expected to be a kind of RuboCop::AST::HashNode
  #braces?
    as an argument with braces
      is expected to be braces
    with braces
      is expected to be braces
    as an argument with no braces
      is expected not to be braces
  #each_key
    when passed a block
      yields all the pairs
    when not passed a block
      is expected to be a kind of Enumerator
  #values
    with a hash with string keys
      is expected to eq 2
      is expected to all be send type
    with a hash with literal values
      is expected to all be literal
      is expected to eq 3
    with an empty hash
      is expected to be empty
  #each_value
    when passed a block
      yields all the pairs
    when not passed a block
      is expected to be a kind of Enumerator
  #pairs
    with a hash of literals
      is expected to all be pair type
      is expected to eq 3
    with an empty hash
      is expected to be empty
    with a hash of variables
      is expected to eq 2
      is expected to all be pair type
  #pairs_on_same_line?
    with some pairs on the same line
      is expected to be pairs on same line
    with all pairs on the same line
      is expected to be pairs on same line
    with no pairs on the same line
      is expected not to be pairs on same line
  #each_pair
    when not passed a block
      is expected to be a kind of Enumerator
    when passed a block
      yields all the pairs

RuboCop::AST::ArrayNode
  #square_brackets?
    with square brackets
      is expected to be square brackets
    with a percent literal
      is expected not to be square brackets
  #values
    with an array of literals
      is expected to all be literal
      is expected to eq 3
    with an array of variables
      is expected to all be send type
      is expected to eq 2
    with an empty array
      is expected to be empty
  .new
    is expected to be a kind of RuboCop::AST::ArrayNode
  #percent_literal?
    with square brackets
      is expected not to be percent literal :string
      is expected not to be percent literal
      is expected not to be percent literal :symbol
    with a string percent literal
      is expected not to be percent literal :symbol
      is expected to be percent literal
      is expected to be percent literal :string
    with a symbol percent literal
      is expected to be percent literal :symbol
      is expected to be percent literal
      is expected not to be percent literal :string
  #bracketed?
    unbracketed
      is expected to be nil
    with square brackets
      is expected to be bracketed
    with a percent literal
      is expected to be bracketed
  #each_value
    with block
      is expected to be a kind of RuboCop::AST::ArrayNode
      is expected to eq ["(int 1)", "(int 2)", "(int 3)"]
    without block
      is expected to be a kind of Enumerator

RuboCop::AST::ClassNode
  .new
    is expected to be a kind of RuboCop::AST::ClassNode
  #parent_class
    when a parent class is specified
      is expected to be const type
    when no parent class is specified
      is expected to be nil
  #identifier
    is expected to be const type
  #body
    with a single expression body
      is expected to be send type
    with a multi-expression body
      is expected to be begin type
    with an empty body
      is expected to be nil

RuboCop::AST::DefinedNode
  .new
    with a defined? node
      is expected to be a kind of RuboCop::AST::DefinedNode
  #method_name
    is expected to eq :defined?
  #receiver
    is expected to be nil
  #arguments
    is expected to eq 1
    is expected to all be sym type

RuboCop::AST::SendNode
  #double_colon?
    with a unary method
      is expected not to be double colon
    without a dot
      is expected not to be double colon
    with a dot
      is expected not to be double colon
    with a double colon
      is expected to be double colon
  #prefix_bang?
    with a non-negated method
      is expected not to be prefix bang
    with a bang method
      is expected to be prefix bang
    with keyword `not`
      is expected not to be prefix bang
  #splat_argument?
    with mixed arguments
      is expected to be splat argument
    with no arguments
      is expected not to be splat argument
    with a splat argument
      is expected to be splat argument
    with regular arguments
      is expected not to be splat argument
  #lambda?
    with a method named lambda in a class
      is expected not to be lambda
    with a non-lambda method
      is expected not to be lambda
    with a lambda method
      is expected to be lambda
    with a stabby lambda method
      is expected to be lambda
  #negation_method?
    with prefix bang
      is expected to be negation method
    with a non-negated method
      is expected not to be negation method
    with prefix `not`
      is expected to be negation method
    with suffix `not`
      is expected not to be negation method
  #arguments
    with multiple literal arguments
      is expected to eq 2
    with multiple mixed arguments
      is expected to eq 2
    with a single splat argument
      is expected to eq 1
    with no arguments
      is expected to be empty
    with a single literal argument
      is expected to eq 1
  #operator_method?
    with a unary operator method
      is expected to be operator method
    with a setter method
      is expected not to be operator method
    with a regular method
      is expected not to be operator method
    with a binary operator method
      is expected to be operator method
  #attribute_accessor?
    with an accessor
      returns the accessor method and Array<accessors>]
      with a call without arguments
        is expected to be nil
  #lambda_literal?
    with a non-lambda method
      is expected not to be lambda
    with `a.() {}` style method
      is expected not to be lambda
    with a stabby lambda
      is expected to be lambda literal
    with a lambda method
      is expected not to be lambda literal
  #nonmutating_binary_operator_method?
    with a mutating binary operator method
      is expected not to be nonmutating binary operator method
    with a regular method
      is expected not to be nonmutating binary operator method
    with a nonmutating binary operator method
      is expected to be nonmutating binary operator method
  #arguments?
    with multiple mixed arguments
      is expected to be arguments
    with a single literal argument
      is expected to be arguments
    with no arguments
      is expected not to be arguments
    with multiple literal arguments
      is expected to be arguments
    with a single splat argument
      is expected to be arguments
  #block_argument?
    with a block argument
      is expected to be block argument
    with mixed arguments
      is expected to be block argument
    with regular arguments
      is expected not to be block argument
    with no arguments
      is expected not to be block argument
  #prefix_not?
    with keyword `not`
      is expected to be prefix not
    with a non-negated method
      is expected not to be prefix not
    with a bang method
      is expected not to be prefix not
  .new
    with a regular method send
      is expected to be a kind of RuboCop::AST::SendNode
    with a safe navigation method send
      is expected to be a kind of RuboCop::AST::SendNode
  #binary_operation??
    with a unary operation
      is expected not to be binary operation
    with an implicit call method
      is expected not to be binary operation
    with a binary operation
      is expected to be binary operation
    with a regular method call
      is expected not to be binary operation
  #non_bare_access_modifier?
    when node is not an access modifier
      is expected not to be non bare access modifier
    when node does not have an argument
      is expected not to be non bare access modifier
    when node is a non-bare `module_function`
      is expected to be non bare access modifier
  #setter_method?
    with a setter method
      is expected to be setter method
    with an indexed setter method
      is expected to be setter method
    with an operator method
      is expected not to be setter method
    with a regular method
      is expected not to be setter method
  #bang_method?
    with a bang method
      is expected to be bang method
    with a regular method
      is expected not to be bang method
    with a predicate method
      is expected not to be bang method
  #block_literal?
    with no block
      is expected not to be block literal
    with a block literal
      is expected to be block literal
    with a block argument
      is expected not to be block literal
    with Ruby >= 2.7
      with a numblock literal
        is expected to be block literal
  #def_modifier
    with several prefixed def modifiers
      is expected to eq :qux
    with a block containing a method definition
      is expected to be nil
    with call with no argument
      is expected to be nil
    with a prefixed def modifier
      is expected to eq :bar
  #parenthesized?
    with arguments
      when not using parentheses
        is expected not to be parenthesized
      when using parentheses
        is expected to be parenthesized
    with no arguments
      when not using parentheses
        is expected not to be parenthesized
      when using parentheses
        is expected to be parenthesized
  #receiver
    with no receiver
      is expected to be nil
    with a variable receiver
      is expected to be send type
    with a literal receiver
      is expected to be str type
  #camel_case_method?
    with a camel case method
      is expected to be camel case method
    with a regular method
      is expected not to be camel case method
  #unary_operation?
    with a unary operation
      is expected to be unary operation
    with a regular method call
      is expected not to be unary operation
    with a binary operation
      is expected not to be unary operation
    with an implicit call method
      is expected not to be unary operation
  #access_modifier?
    when node is a bare `module_function`
      is expected to be access modifier
    when node is not an access modifier
      is expected not to be bare access modifier
    when node is a non-bare `module_function`
      is expected to be access modifier
  #nonmutating_unary_operator_method?
    with a nonmutating unary operator method
      is expected to be nonmutating unary operator method
    with a regular method
      is expected not to be nonmutating unary operator method
  #def_modifier?
    with several prefixed def modifiers
      is expected to be def modifier
    with a prefixed def modifier
      is expected to be def modifier
    with a block containing a method definition
      is expected not to be def modifier
  #method_name
    with an operator method
      is expected to eq :==
    with a setter method
      is expected to eq :bar=
    with an implicit call method
      is expected to eq :call
    with a plain method
      is expected to eq :bar
  #self_receiver?
    with an implicit receiver
      is expected not to be self receiver
    with a self receiver
      is expected to be self receiver
    with a non-self receiver
      is expected not to be self receiver
  #macro?
    with a receiver
      when parent is a class
        is expected not to be macro
      when parent is a module
        is expected not to be macro
    without a receiver
      when parent is a block in a macro scope
        is expected to be macro
      with Ruby >= 2.7
        when parent is a numblock in a macro scope
          is expected to be macro
      when parent is a keyword begin inside of an class
        is expected to be macro
      when parent is a module
        is expected to be macro
      when in the global scope
        is expected to be macro
      when the condition of an if
        is expected not to be macro
      when parent is a block not in a macro scope
        is expected not to be macro
      when in an if
        is expected to be macro
      when parent is a class
        is expected to be macro
      without a parent
        is expected to be macro
      when parent is a struct constructor
        is expected to be macro
      when parent is a method definition
        is expected not to be macro
      when parent is a singleton class
        is expected to be macro
      when parent is a begin without a parent
        is expected to be macro
      when parent is a class constructor
        is expected to be macro
  #const_receiver?
    with a self receiver
      is expected not to be const receiver
    with a non-constant receiver
      is expected not to be const receiver
    with a constant receiver
      is expected to be const receiver
  #implicit_call?
    with an implicit call method
      is expected to be implicit call
    with a regular method
      is expected not to be implicit call
    with an explicit call method
      is expected not to be implicit call
  #predicate_method?
    with a bang method
      is expected not to be predicate method
    with a predicate method
      is expected to be predicate method
    with a regular method
      is expected not to be predicate method
  #loop_keyword?
    is expected not to be loop keyword
  #block_node
    with a block literal
      is expected to be block type
    with no block
      is expected to be nil
    with a block argument
      is expected to be nil
    with Ruby >= 2.7
      with a numblock literal
        is expected to be numblock type
  #comparison_method?
    with a comparison method
      is expected to be comparison method
    with a regular method
      is expected not to be comparison method
    with a negation method
      is expected not to be comparison method
  #bare_access_modifier?
    with Ruby >= 2.7
      when node is access modifier in block
        is expected to be bare access modifier
      when node is access modifier in numblock
        is expected to be bare access modifier
    when node is not an access modifier
      is expected not to be bare access modifier
    when node is a bare `module_function`
      is expected to be bare access modifier
    when node has an argument
      is expected not to be bare access modifier
  #command?
    when argument is a string
      with an implicit receiver
        is expected to be command "bar"
      with an explicit receiver
        is expected not to be command "bar"
    when argument is a symbol
      with an explicit receiver
        is expected not to be command :bar
      with an implicit receiver
        is expected to be command :bar
  #enumerable_method?
    with a regular method
      is expected not to be enumerable method
    with an enumerable method
      is expected to be enumerable method
  #method?
    when message does not match
      when argument is a symbol
        is expected not to be method :foo
      when argument is a string
        is expected not to be method "foo"
    when message matches
      when argument is a symbol
        is expected to be method :bar
      when argument is a string
        is expected to be method "bar"
  #assignment_method?
    with a bracket assignment method
      is expected to be assignment method
    with an assignment method
      is expected to be assignment method
    with a comparison method
      is expected not to be assignment method
    with a regular method
      is expected not to be assignment method
  #nonmutating_array_method?
    with a regular method
      is expected not to be nonmutating array method
    with a nonmutating Array method
      is expected to be nonmutating array method
    with a mutating Array method
      is expected not to be nonmutating array method
  #first_argument
    with a single literal argument
      is expected to be sym type
    with multiple literal arguments
      is expected to be sym type
    with a single splat argument
      is expected to be splat type
    with no arguments
      is expected to be nil
    with multiple mixed arguments
      is expected to be sym type
  #arithmetic_operation?
    with a binary arithmetic operation
      is expected to be arithmetic operation
    with a unary numeric operation
      is expected not to be arithmetic operation
    with a regular method call
      is expected not to be arithmetic operation
  #nonmutating_operator_method?
    with a nonmutating unary operator method
      is expected to be nonmutating operator method
    with a nonmutating binary operator method
      is expected to be nonmutating operator method
    with a mutating binary operator method
      is expected not to be nonmutating operator method
    with a regular method
      is expected not to be nonmutating operator method
  #dot?
    with a unary method
      is expected not to be dot
    without a dot
      is expected not to be dot
    with a double colon
      is expected not to be dot
    with a dot
      is expected to be dot
  #last_argument
    with a single splat argument
      is expected to be splat type
    with a single literal argument
      is expected to be sym type
    with no arguments
      is expected to be nil
    with multiple mixed arguments
      is expected to be splat type
    with multiple literal arguments
      is expected to be sym type
  #nonmutating_hash_method?
    with a mutating Hash method
      is expected not to be nonmutating hash method
    with a nonmutating Hash method
      is expected to be nonmutating hash method
    with a regular method
      is expected not to be nonmutating hash method
  #nonmutating_string_method?
    with a regular method
      is expected not to be nonmutating string method
    with a nonmutating String method
      is expected to be nonmutating string method
    with a mutating String method
      is expected not to be nonmutating string method
  #post_condition_loop?
    is expected not to be post condition loop

RuboCop::AST::NodePattern::Parser
  sequences
    parses simple sequences properly
    expands ... in sequence head deep inside unions
    generates specialized nodes
    parses capture vs repetition with correct priority
    parses unions of literals as a set
    parses function calls

RuboCop::AST::CasgnNode
  #name
    is expected to eq :VAR
  #expression
    is expected to eq s(:send, nil, :value)
  .new
    with a `casgn` node
      is expected to be a kind of RuboCop::AST::CasgnNode
  #namespace
    when there is no parent
      is expected to be nil
    when the parent is a `const`
      is expected to eq s(:const, nil, :FOO)
    when the parent is a `cbase`
      is expected to eq s(:cbase)

RuboCop::AST::RangeNode
  .new
    with an inclusive range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode
    with a beignless range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode
    with an exclusive range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode
    with an infinite range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode

Finished in 16.91 seconds (files took 16.91 seconds to load)
2392 examples, 0 failures

Randomized with seed 36516

/usr/bin/ruby3.3 /usr/bin/gem2deb-test-runner

┌──────────────────────────────────────────────────────────────────────────────┐
│ Checking Rubygems dependency resolution on ruby3.3                           │
└──────────────────────────────────────────────────────────────────────────────┘

RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/i386-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/i386-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -e gem\ \"rubocop-ast\"

┌──────────────────────────────────────────────────────────────────────────────┐
│ Run tests for ruby3.3 from debian/ruby-tests.rake                            │
└──────────────────────────────────────────────────────────────────────────────┘

RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/ruby-rubocop-ast/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-rubocop-ast-1.24.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/i386-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/i386-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake
/usr/bin/ruby3.3 -ruri -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
warning: parser/current is loading parser/ruby33, which recognizes 3.3.4-compliant syntax, but you are running 3.3.7.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.

Randomized with seed 19072

RuboCop::AST::IntNode
  #sign?
    explicit positive int
      is expected to be sign
    explicit negative int
      is expected to be sign
  #value
    is expected to eq 10
  .new
    is expected to be a kind of RuboCop::AST::IntNode

RuboCop::AST::RegexpNode
  #single_interpolation?
    with o and other options
      is expected to be single interpolation
    with only o option
      is expected to be single interpolation
    with other options
      is expected not to be single interpolation
    with no options
      is expected not to be single interpolation
  #options
    with a regexp with single option
      is expected to eq 1
    with an empty regexp
      is expected to eq 0
    with a regexp without option
      is expected to eq 0
    with a regexp with multiple options
      is expected to eq 3
    with a regexp with "o" option
      is expected to eq 0
  #no_encoding?
    with no options
      is expected not to be no encoding
    with only n option
      is expected to be no encoding
    with other options
      is expected not to be no encoding
    with n and other options
      is expected to be no encoding
  #interpolation?
    with regexp quote
      is expected to be interpolation
    with no interpolation returns false
      is expected not to be interpolation
    with direct variable interpoation
      is expected to be interpolation
  #fixed_encoding?
    with no options
      is expected not to be fixed encoding
    with u and other options
      is expected to be fixed encoding
    with other options
      is expected not to be fixed encoding
    with only u option
      is expected to be fixed encoding
  #ignore_case?
    with no options
      is expected not to be ignore case
    with other options
      is expected not to be ignore case
    with i and other options
      is expected to be ignore case
    with only i option
      is expected to be ignore case
  #to_regexp
    with a regexp with option
      is expected to eq /.+/mix
    with a regexp with an "o" option
      is expected to eq "/abc/i"
    with a regexp without option
      is expected to eq /.+/
    with a regexp with an "u" option
      is expected to eq "/abc/"
    with an empty regexp with option
      is expected to eq //ix
    with a multi-line regexp with option
      is expected to eq /
.+
/ix
    with a regexp with an "n" option
      is expected to eq "/abc/n"
    with a multi-line regexp without option
      is expected to eq /
.+
/
    with an empty regexp
      is expected to eq //
  #extended?
    with no options
      is expected not to be extended
    with x and other options
      is expected to be extended
    with only x option
      is expected to be extended
    with other options
      is expected not to be extended
  #content
    with a multi-line regexp with option
      is expected to eq "\n.+\n"
    with a multi-line regexp without option
      is expected to eq "\n.+\n"
    with a regexp without option
      is expected to eq ".+"
    with an empty regexp
      is expected to eq ""
    with an empty regexp with option
      is expected to eq ""
    with a regexp with option
      is expected to eq ".+"
  #multiline_mode?
    with m and other options
      is expected to be multiline mode
    with no options
      is expected not to be multiline mode
    with only m option
      is expected to be multiline mode
    with other options
      is expected not to be multiline mode
  #delimiter?
    with %r/-delimiters
      is expected not to be delimiter "{"
      is expected not to be delimiter "%r"
      is expected not to be delimiter "%r/"
      is expected to be delimiter "/"
      is expected not to be delimiter "r"
      is expected not to be delimiter "%"
      is expected not to be delimiter "}"
    with multi-line %r{-delimiters
      is expected not to be delimiter "%r"
      is expected not to be delimiter "r"
      is expected to be delimiter "}"
      is expected not to be delimiter "%r{"
      is expected not to be delimiter "%"
      is expected not to be delimiter "%r/"
      is expected not to be delimiter "/"
      is expected to be delimiter "{"
    with %r{-delimiters
      is expected not to be delimiter "r"
      is expected not to be delimiter "%r"
      is expected to be delimiter "{"
      is expected not to be delimiter "%"
      is expected to be delimiter "}"
      is expected not to be delimiter "/"
      is expected not to be delimiter "%r{"
      is expected not to be delimiter "%r/"
    with %r<-delimiters
      is expected not to be delimiter "{"
      is expected not to be delimiter "}"
      is expected not to be delimiter "%r{"
      is expected to be delimiter ">"
      is expected to be delimiter "<"
      is expected not to be delimiter "%r/"
      is expected not to be delimiter "%"
      is expected not to be delimiter "/"
      is expected not to be delimiter "%r"
      is expected not to be delimiter "r"
      is expected not to be delimiter "%r<"
    with /-delimiters
      is expected to be delimiter "/"
      is expected not to be delimiter "{"
  .new
    is expected to be a kind of RuboCop::AST::RegexpNode
  #percent_r_literal?
    with %r<-delimiters
      is expected to be percent r literal
    with multi-line %r{-delimiters
      is expected to be percent r literal
    with /-delimiters
      is expected not to be percent r literal
    with %r{-delimiters
      is expected to be percent r literal
    with %r/-delimiters
      is expected to be percent r literal
  #delimiters
    with %r/-delimiters
      is expected to eq ["/", "/"]
    with multi-line %r{-delimiters
      is expected to eq ["{", "}"]
    with /-delimiters
      is expected to eq ["/", "/"]
    with %r{-delimiters
      is expected to eq ["{", "}"]
    with %r<-delimiters
      is expected to eq ["<", ">"]
  #slash_literal?
    with multi-line %r{-delimiters
      is expected not to be slash literal
    with %r/-delimiters
      is expected not to be slash literal
    with %r<-delimiters
      is expected not to be slash literal
    with /-delimiters
      is expected to be slash literal
    with %r{-delimiters
      is expected not to be slash literal
  #regopt
    with a multi-line regexp with option
      is expected to be regopt type
      is expected to eq [:i, :m, :x]
    with an empty regexp with option
      is expected to eq [:i, :x]
      is expected to be regopt type
    with an empty regexp
      is expected to be regopt type
      is expected to be empty
    with a regexp without option
      is expected to be regopt type
      is expected to be empty
    with a regexp with option
      is expected to eq [:i, :m, :x]
      is expected to be regopt type
    with a multi-line regexp without option
      is expected to be empty
      is expected to be regopt type

RuboCop::AST::SendNode
  #const_receiver?
    with a non-constant receiver
      is expected not to be const receiver
    with a constant receiver
      is expected to be const receiver
    with a self receiver
      is expected not to be const receiver
  #block_literal?
    with Ruby >= 2.7
      with a numblock literal
        is expected to be block literal
    with no block
      is expected not to be block literal
    with a block literal
      is expected to be block literal
    with a block argument
      is expected not to be block literal
  #bang_method?
    with a regular method
      is expected not to be bang method
    with a bang method
      is expected to be bang method
    with a predicate method
      is expected not to be bang method
  #def_modifier
    with call with no argument
      is expected to be nil
    with a block containing a method definition
      is expected to be nil
    with several prefixed def modifiers
      is expected to eq :qux
    with a prefixed def modifier
      is expected to eq :bar
  #def_modifier?
    with a prefixed def modifier
      is expected to be def modifier
    with several prefixed def modifiers
      is expected to be def modifier
    with a block containing a method definition
      is expected not to be def modifier
  #block_argument?
    with no arguments
      is expected not to be block argument
    with mixed arguments
      is expected to be block argument
    with regular arguments
      is expected not to be block argument
    with a block argument
      is expected to be block argument
  #comparison_method?
    with a comparison method
      is expected to be comparison method
    with a negation method
      is expected not to be comparison method
    with a regular method
      is expected not to be comparison method
  #arithmetic_operation?
    with a binary arithmetic operation
      is expected to be arithmetic operation
    with a regular method call
      is expected not to be arithmetic operation
    with a unary numeric operation
      is expected not to be arithmetic operation
  #arguments?
    with no arguments
      is expected not to be arguments
    with multiple literal arguments
      is expected to be arguments
    with a single splat argument
      is expected to be arguments
    with a single literal argument
      is expected to be arguments
    with multiple mixed arguments
      is expected to be arguments
  #loop_keyword?
    is expected not to be loop keyword
  #attribute_accessor?
    with an accessor
      returns the accessor method and Array<accessors>]
      with a call without arguments
        is expected to be nil
  #bare_access_modifier?
    with Ruby >= 2.7
      when node is access modifier in numblock
        is expected to be bare access modifier
      when node is access modifier in block
        is expected to be bare access modifier
    when node is not an access modifier
      is expected not to be bare access modifier
    when node has an argument
      is expected not to be bare access modifier
    when node is a bare `module_function`
      is expected to be bare access modifier
  #nonmutating_hash_method?
    with a mutating Hash method
      is expected not to be nonmutating hash method
    with a regular method
      is expected not to be nonmutating hash method
    with a nonmutating Hash method
      is expected to be nonmutating hash method
  #predicate_method?
    with a bang method
      is expected not to be predicate method
    with a regular method
      is expected not to be predicate method
    with a predicate method
      is expected to be predicate method
  #post_condition_loop?
    is expected not to be post condition loop
  #nonmutating_operator_method?
    with a mutating binary operator method
      is expected not to be nonmutating operator method
    with a nonmutating unary operator method
      is expected to be nonmutating operator method
    with a nonmutating binary operator method
      is expected to be nonmutating operator method
    with a regular method
      is expected not to be nonmutating operator method
  #macro?
    without a receiver
      when parent is a singleton class
        is expected to be macro
      when parent is a block in a macro scope
        is expected to be macro
      when parent is a struct constructor
        is expected to be macro
      when in an if
        is expected to be macro
      when parent is a keyword begin inside of an class
        is expected to be macro
      without a parent
        is expected to be macro
      when parent is a class constructor
        is expected to be macro
      when parent is a class
        is expected to be macro
      with Ruby >= 2.7
        when parent is a numblock in a macro scope
          is expected to be macro
      when the condition of an if
        is expected not to be macro
      when in the global scope
        is expected to be macro
      when parent is a block not in a macro scope
        is expected not to be macro
      when parent is a begin without a parent
        is expected to be macro
      when parent is a module
        is expected to be macro
      when parent is a method definition
        is expected not to be macro
    with a receiver
      when parent is a class
        is expected not to be macro
      when parent is a module
        is expected not to be macro
  .new
    with a safe navigation method send
      is expected to be a kind of RuboCop::AST::SendNode
    with a regular method send
      is expected to be a kind of RuboCop::AST::SendNode
  #nonmutating_array_method?
    with a regular method
      is expected not to be nonmutating array method
    with a nonmutating Array method
      is expected to be nonmutating array method
    with a mutating Array method
      is expected not to be nonmutating array method
  #implicit_call?
    with a regular method
      is expected not to be implicit call
    with an explicit call method
      is expected not to be implicit call
    with an implicit call method
      is expected to be implicit call
  #prefix_not?
    with a non-negated method
      is expected not to be prefix not
    with keyword `not`
      is expected to be prefix not
    with a bang method
      is expected not to be prefix not
  #parenthesized?
    with arguments
      when not using parentheses
        is expected not to be parenthesized
      when using parentheses
        is expected to be parenthesized
    with no arguments
      when using parentheses
        is expected to be parenthesized
      when not using parentheses
        is expected not to be parenthesized
  #command?
    when argument is a symbol
      with an explicit receiver
        is expected not to be command :bar
      with an implicit receiver
        is expected to be command :bar
    when argument is a string
      with an explicit receiver
        is expected not to be command "bar"
      with an implicit receiver
        is expected to be command "bar"
  #splat_argument?
    with a splat argument
      is expected to be splat argument
    with no arguments
      is expected not to be splat argument
    with regular arguments
      is expected not to be splat argument
    with mixed arguments
      is expected to be splat argument
  #prefix_bang?
    with keyword `not`
      is expected not to be prefix bang
    with a non-negated method
      is expected not to be prefix bang
    with a bang method
      is expected to be prefix bang
  #nonmutating_unary_operator_method?
    with a nonmutating unary operator method
      is expected to be nonmutating unary operator method
    with a regular method
      is expected not to be nonmutating unary operator method
  #camel_case_method?
    with a regular method
      is expected not to be camel case method
    with a camel case method
      is expected to be camel case method
  #unary_operation?
    with an implicit call method
      is expected not to be unary operation
    with a binary operation
      is expected not to be unary operation
    with a unary operation
      is expected to be unary operation
    with a regular method call
      is expected not to be unary operation
  #nonmutating_binary_operator_method?
    with a nonmutating binary operator method
      is expected to be nonmutating binary operator method
    with a mutating binary operator method
      is expected not to be nonmutating binary operator method
    with a regular method
      is expected not to be nonmutating binary operator method
  #block_node
    with Ruby >= 2.7
      with a numblock literal
        is expected to be numblock type
    with a block argument
      is expected to be nil
    with no block
      is expected to be nil
    with a block literal
      is expected to be block type
  #self_receiver?
    with a non-self receiver
      is expected not to be self receiver
    with a self receiver
      is expected to be self receiver
    with an implicit receiver
      is expected not to be self receiver
  #access_modifier?
    when node is not an access modifier
      is expected not to be bare access modifier
    when node is a bare `module_function`
      is expected to be access modifier
    when node is a non-bare `module_function`
      is expected to be access modifier
  #nonmutating_string_method?
    with a nonmutating String method
      is expected to be nonmutating string method
    with a regular method
      is expected not to be nonmutating string method
    with a mutating String method
      is expected not to be nonmutating string method
  #non_bare_access_modifier?
    when node is not an access modifier
      is expected not to be non bare access modifier
    when node does not have an argument
      is expected not to be non bare access modifier
    when node is a non-bare `module_function`
      is expected to be non bare access modifier
  #operator_method?
    with a binary operator method
      is expected to be operator method
    with a unary operator method
      is expected to be operator method
    with a setter method
      is expected not to be operator method
    with a regular method
      is expected not to be operator method
  #lambda_literal?
    with `a.() {}` style method
      is expected not to be lambda
    with a non-lambda method
      is expected not to be lambda
    with a lambda method
      is expected not to be lambda literal
    with a stabby lambda
      is expected to be lambda literal
  #binary_operation??
    with a unary operation
      is expected not to be binary operation
    with an implicit call method
      is expected not to be binary operation
    with a binary operation
      is expected to be binary operation
    with a regular method call
      is expected not to be binary operation
  #arguments
    with multiple mixed arguments
      is expected to eq 2
    with no arguments
      is expected to be empty
    with a single splat argument
      is expected to eq 1
    with a single literal argument
      is expected to eq 1
    with multiple literal arguments
      is expected to eq 2
  #negation_method?
    with prefix `not`
      is expected to be negation method
    with prefix bang
      is expected to be negation method
    with suffix `not`
      is expected not to be negation method
    with a non-negated method
      is expected not to be negation method
  #method?
    when message does not match
      when argument is a symbol
        is expected not to be method :foo
      when argument is a string
        is expected not to be method "foo"
    when message matches
      when argument is a symbol
        is expected to be method :bar
      when argument is a string
        is expected to be method "bar"
  #lambda?
    with a non-lambda method
      is expected not to be lambda
    with a method named lambda in a class
      is expected not to be lambda
    with a stabby lambda method
      is expected to be lambda
    with a lambda method
      is expected to be lambda
  #double_colon?
    with a double colon
      is expected to be double colon
    without a dot
      is expected not to be double colon
    with a dot
      is expected not to be double colon
    with a unary method
      is expected not to be double colon
  #setter_method?
    with an indexed setter method
      is expected to be setter method
    with a regular method
      is expected not to be setter method
    with an operator method
      is expected not to be setter method
    with a setter method
      is expected to be setter method
  #receiver
    with no receiver
      is expected to be nil
    with a literal receiver
      is expected to be str type
    with a variable receiver
      is expected to be send type
  #method_name
    with a plain method
      is expected to eq :bar
    with a setter method
      is expected to eq :bar=
    with an implicit call method
      is expected to eq :call
    with an operator method
      is expected to eq :==
  #assignment_method?
    with a comparison method
      is expected not to be assignment method
    with an assignment method
      is expected to be assignment method
    with a bracket assignment method
      is expected to be assignment method
    with a regular method
      is expected not to be assignment method
  #enumerable_method?
    with an enumerable method
      is expected to be enumerable method
    with a regular method
      is expected not to be enumerable method
  #last_argument
    with multiple literal arguments
      is expected to be sym type
    with no arguments
      is expected to be nil
    with multiple mixed arguments
      is expected to be splat type
    with a single splat argument
      is expected to be splat type
    with a single literal argument
      is expected to be sym type
  #first_argument
    with a single splat argument
      is expected to be splat type
    with a single literal argument
      is expected to be sym type
    with multiple literal arguments
      is expected to be sym type
    with multiple mixed arguments
      is expected to be sym type
    with no arguments
      is expected to be nil
  #dot?
    with a double colon
      is expected not to be dot
    without a dot
      is expected not to be dot
    with a unary method
      is expected not to be dot
    with a dot
      is expected to be dot

RuboCop::AST::WhileNode
  .new
    with a statement while
      is expected to be a kind of RuboCop::AST::WhileNode
    with a modifier while
      is expected to be a kind of RuboCop::AST::WhileNode
  #post_condition_loop?
    with a statement while
      is expected not to be post condition loop
    with a modifier while
      is expected to be post condition loop
  #do?
    without a do keyword
      is expected not to be do
    with a do keyword
      is expected to be do
  #keyword
    is expected to eq "while"
  #loop_keyword?
    with a modifier while
      is expected to be loop keyword
    with a statement while
      is expected to be loop keyword
  #inverse_keyword
    is expected to eq "until"

RuboCop::AST::AndAsgnNode
  #assignment_node
    is expected to be a kind of RuboCop::AST::AsgnNode
  .new
    is expected to be a kind of RuboCop::AST::AndAsgnNode
  #expression
    is expected to eq s(:send, nil, :value)
  #operator
    is expected to eq :"&&"
  #name
    is expected to eq :var

RuboCop::AST::AliasNode
  #old_identifier
    is expected to eq :bar
    is expected to be sym type
  #new_identifier
    is expected to be sym type
    is expected to eq :foo
  .new
    is expected to be a kind of RuboCop::AST::AliasNode

RuboCop::AST::NextNode
  behaves like wrapped arguments node
    #arguments
      with multiple literal arguments
        is expected to eq 2
      with a single argument
        is expected to eq 1
      with a single splat argument
        is expected to eq 1
      with no arguments
        is expected to be empty
      with no arguments and braces
        is expected to be empty
      with a single argument and braces
        is expected to eq 1
    .new
      without arguments
        is expected to be a kind of RuboCop::AST::NextNode
      with arguments
        is expected to be a kind of RuboCop::AST::NextNode

RuboCop::AST::ArgNode
  #default?
    with a block
      is expected to equal false
    with a block argument
      is expected to equal false
    with an optional keyword argument
      is expected to equal true
    with argument forwarding
      with Ruby >= 3.0
        is expected to equal false
      with Ruby >= 2.7
        is expected to equal false
    with a regular argument
      is expected to equal false
    with a shadow argument
      is expected to equal false
    with a splatted argument
      is expected to equal false
    with an optional argument
      is expected to equal true
    with a double splatted argument
      is expected to equal false
  #default_value
    with a shadow argument
      is expected to be nil
    with a double splatted argument
      is expected to be nil
    with an optional keyword argument
      is expected to eq s(:int, 42)
    with a block
      is expected to be nil
    with a splatted argument
      is expected to be nil
    with a regular argument
      is expected to be nil
    with a block argument
      is expected to be nil
    with argument forwarding
      with Ruby >= 2.7
        is expected to be nil
      with Ruby >= 3.0
        is expected to be nil
    with an optional argument
      is expected to eq s(:int, 42)
  #name
    with a regular argument
      is expected to eq :x
    with a splatted argument
      is expected to eq :x
    with a shadow argument
      is expected to eq :x
    with a nameless double splatted argument
      is expected to be nil
    with an optional argument
      is expected to eq :x
    with a double splatted argument
      is expected to eq :x
    with a keyword argument
      is expected to eq :x
    with a block argument
      is expected to eq :x
    with a block
      is expected to eq :x
    with an optional keyword argument
      is expected to eq :x
    with argument forwarding
      with Ruby >= 2.7
        is expected to be nil
      with Ruby >= 3.0
        is expected to be nil
    with a nameless splatted argument
      is expected to be nil
  .new
    with a shadow argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with an optional argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with an optional keyword argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a splatted argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a double splatted argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with a block argument
      is expected to be a kind of RuboCop::AST::ArgNode
    with argument forwarding
      with Ruby >= 2.7
        is expected to be a kind of RuboCop::AST::ArgNode
      with Ruby >= 3.0
        is expected to be a kind of RuboCop::AST::ArgNode
    with a block
      is expected to be a kind of RuboCop::AST::ArgNode
    with a method definition
      is expected to be a kind of RuboCop::AST::ArgNode
    with a lambda literal
      is expected to be a kind of RuboCop::AST::ArgNode
    with a keyword argument
      is expected to be a kind of RuboCop::AST::ArgNode

RuboCop::AST::Node
  #value_used?
    within a singleton class node
      is always true
    within a while node
      is true only for the condition
    at the top level
      is false
    within an if...else..end node
      at the top level
        is true only for the condition
      nested in a method call
        is always true
    within a class definition node
      is always true
    within a module definition node
      is always true
    at the end of a block
      is always true
    within an array literal
      at the top level
        is always false
      assigned to an ivar
        is always true
    within a method call node
      is always true
  #recursive_basic_literal?
    behaves like literal
      returns true for `[1, 2, 3]`
    behaves like literal
      returns true for `!true`
    behaves like non literal
      returns false for `{ :sym => some_method_call }`
    behaves like non literal
      returns false for `[some_method_call]`
    behaves like literal
      returns true for `(false <=> true)`
    behaves like non literal
      returns false for `(x && false)`
    behaves like literal
      returns true for `{ a: 1, b: 2 }`
    behaves like non literal
      returns false for `(x == false)`
    behaves like non literal
      returns false for `some_method_call(x, y)`
    behaves like literal
      returns true for `/./`
    behaves like literal
      returns true for `1.0`
    behaves like literal
      returns true for `%r{abx}ixo`
    behaves like literal
      returns true for `"#{2}"`
    behaves like non literal
      returns false for `/.#{some_method_call}/`
    behaves like literal
      returns true for `(false && true)`
    behaves like non literal
      returns false for `some_method_call`
    behaves like non literal
      returns false for `(x or false)`
    behaves like literal
      returns true for `false`
    behaves like literal
      returns true for `nil`
    behaves like non literal
      returns false for `%r{abx#{foo}}ixo`
    behaves like literal
      returns true for `1`
    behaves like literal
      returns true for `(1)`
    behaves like non literal
      returns false for `{ some_method_call => :sym }`
    behaves like literal
      returns true for `'str'`
    behaves like literal
      returns true for `{ :a => 1, :b => 2 }`
    behaves like literal
      returns true for `(false or true)`
  #struct_constructor?
    ::Struct
      matches
    struct definition without block
      does not match
    struct definition with a block
      matches
  #numeric_type?
    when float literal
      is true
    when integer literal
      is true
    when string literal
      is true
    when complex literal
      is true
    when rational literal
      is true
    when complex literal whose imaginary part is a rational
      is true
  #parent_module_name
    when node nested in an unknown block
      is expected to be nil
    when node on module
      is expected to eq "Foo"
    when node on top level
      is expected to eq "Object"
    when node nested in a class << exp
      is expected to be nil
    when node on class in singleton class
      is expected to eq "Foo::#<Class:Foo>::Bar"
    when node on singleton class
      is expected to eq "Foo::#<Class:Foo>"
  #module_definition?
    with Module.new
      matches
      when using numbered parameter
        matches
    using module keyword
      matches
    namespaced modules
      matches
    prepend Module.new
      matches
    with ::ModuleName
      matches
    included module definition
      matches
    nested modules
      matches
  #pure?
    for a nested if
      where one branch contains an assignment statement
        returns false
      where the innermost descendants are local vars and literals
        returns true
      where one branch contains a method call
        returns false
    for an ivar assignment
      returns false
    for a cvar assignment
      returns false
    for a module definition
      returns false
    for a regexp
      with interpolated segments
        returns false
      with options
        returns true
      with no interpolation
        returns true
    for an integer literal
      returns true
    for a gvar assignment
      returns false
    for a method call
      returns false
    for an lvar assignment
      returns false
    for a hash literal
      with only literal children
        returns true
      which contains a method call
        returns false
    for an array literal
      with only literal children
        returns true
      which contains a method call
        returns false
    for a class definition
      returns false
  sibling_access
    returns trivial values for a root node
    for a node with siblings
      returns the expected values
    for a single child
      returns the expected values
  #argument_type?
    method arguments
      returns true for all argument types
    block arguments
      returns true for all argument types
  #conditional?
    when `until` node
      is true
    when `while` node
      is true
    when post condition loop node
      is false
    when `if` node
      is true
    when `case_match` node
      is true
    when `case` node
      is true
  #class_constructor?
    class definition with a block
      matches
    class definition
      does not match
    module definition with a block
      matches
    class definition on outer scope
      matches
  #class_definition?
    namespaced class
      matches
    with inheritance
      matches
    with self singleton class
      matches
    without inheritance
      matches
    with object singleton class
      matches
    with ::ClassName
      matches
    with Class.new
      matches
      when using numbered parameter
        matches
    constant defined as Struct without block
      does not match
    with Struct
      matches
      when using numbered parameter
        matches

RuboCop::AST::Traversal
  knows all current node types
  for example case foo; in 1..2 then true; end
    traverses all nodes
  for example p <<~E
  x
    y
E
    traverses all nodes
  for example def f(*); end
    traverses all nodes
  for example %I[foo #{bar}]
    traverses all nodes
  for example foo & 1
    traverses all nodes
  for example foo = bar, 1
    traverses all nodes
  for example def (foo).foo; end
    traverses all nodes
  for example  :'#@1'
    traverses all nodes
  for example a b(c d), 1.0i do end
    traverses all nodes
  for example
    traverses all nodes
  for example { foo: 2, **bar }
    traverses all nodes
  for example begin; meth; rescue Exception, foo; bar; end
    traverses all nodes
  for example super(foo)
    traverses all nodes
  for example foo::a += m foo
    traverses all nodes
  for example bar if foo
    traverses all nodes
  for example case foo; in [x,] then nil; end
    traverses all nodes
  for example m { _1 + _9 }
    traverses all nodes
  for example fun(:foo => 1, &baz)
    traverses all nodes
  for example foo <= 1
    traverses all nodes
  for example m { |foo| }
    traverses all nodes
  for example case foo; in [x] then nil; end
    traverses all nodes
  for example a b{c d}, /x/m do end
    traverses all nodes
  for example f{ |a, b,| }
    traverses all nodes
  for example return foo
    traverses all nodes
  for example :'foo'
    traverses all nodes
  for example class Foo end
    traverses all nodes
  for example *, c, d = bar
    traverses all nodes
  for example ->(**nil) {}
    traverses all nodes
  for example p <<~E
  x
    y
E
    traverses all nodes
  for example a #
#
&.foo
    traverses all nodes
  for example <<~FOO
  baz\
  qux
FOO
    traverses all nodes
  for example f{ || }
    traverses all nodes
  for example foo ** 1
    traverses all nodes
  for example foo.A += m foo
    traverses all nodes
  for example a&.b
    traverses all nodes
  for example foo[1, 2] = 3
    traverses all nodes
  for example foo.(1)
    traverses all nodes
  for example begin; meth; rescue; foo; else; bar; end
    traverses all nodes
  for example "foo#@a" "bar"
    traverses all nodes
  for example f{ |foo: 1, bar: 2, **baz, &b| }
    traverses all nodes
  for example +2.0 ** 10
    traverses all nodes
  for example foo << 1
    traverses all nodes
  for example %w[foo bar]
    traverses all nodes
  for example def f ((*r)); end
    traverses all nodes
  for example a b(c d), 1.0r do end
    traverses all nodes
  for example a&.b &&= 1
    traverses all nodes
  for example case foo; in [x, y, *] then true; end
    traverses all nodes
  for example foo.a = 1
    traverses all nodes
  for example p <<~E "  y"
  x
E
    traverses all nodes
  for example def m; class << self; A = nil; end; end
    traverses all nodes
  for example foo::A += m foo
    traverses all nodes
  for example fun { }
    traverses all nodes
  for example foo[0, 1] &&= 2
    traverses all nodes
  for example def self._6; end
    traverses all nodes
  for example f <<-TABLE do
TABLE
end
    traverses all nodes
  for example __ENCODING__
    traverses all nodes
  for example foo::m += raise(bar) rescue nil
    traverses all nodes
  for example p <<~"E"
  x\n   y
E
    traverses all nodes
  for example case foo; in *x then nil; end
    traverses all nodes
  for example 42i
    traverses all nodes
  for example def f(&block); end
    traverses all nodes
  for example begin; meth; rescue => @ex; bar; end
    traverses all nodes
  for example case foo; in A() then true; end
    traverses all nodes
  for example case foo; in [*, x] then true; end
    traverses all nodes
  for example yield(foo)
    traverses all nodes
  for example case foo; in 1 => a then true; end
    traverses all nodes
  for example def f (foo: 1, bar: 2, **baz, &b); end
    traverses all nodes
  for example while foo do meth end
    traverses all nodes
  for example not foo
    traverses all nodes
  for example { }
    traverses all nodes
  for example "foo#{bar}baz"
    traverses all nodes
  for example  %W[#@1]
    traverses all nodes
  for example <<-"HERE"
#@@1
HERE
    traverses all nodes
  for example a, b = *foo, bar
    traverses all nodes
  for example foo.A += 1
    traverses all nodes
  for example def f ((*, p)); end
    traverses all nodes
  for example -> do _1 + _9 end
    traverses all nodes
  for example +42
    traverses all nodes
  for example next()
    traverses all nodes
  for example td (1_500).toString(); td.num do; end
    traverses all nodes
  for example ..100
    traverses all nodes
  for example [*foo]
    traverses all nodes
  for example not m foo
    traverses all nodes
  for example class A < B
end
    traverses all nodes
  for example case foo; in {} then true; end
    traverses all nodes
  for example def f(**); end
    traverses all nodes
  for example foo[bar,]
    traverses all nodes
  for example let (:a) { m do; end }
    traverses all nodes
  for example let () { m(a) do; end }
    traverses all nodes
  for example  '#@1'
    traverses all nodes
  for example a, * = bar
    traverses all nodes
  for example foo.a &&= 1
    traverses all nodes
  for example def a b:
return
end
    traverses all nodes
  for example !(a, b = foo)
    traverses all nodes
  for example while def foo a = tap do end; end; break; end
    traverses all nodes
  for example self
    traverses all nodes
  for example case; when foo; 'foo'; end
    traverses all nodes
  for example %r{a\
b}
    traverses all nodes
  for example class << foo; nil; end
    traverses all nodes
  for example  %{#@@1}
    traverses all nodes
  for example a b(c(d)), :e do end
    traverses all nodes
  for example %I[foo#{bar}]
    traverses all nodes
  for example case foo; in A::B then true; end
    traverses all nodes
  for example return fun foo do end
    traverses all nodes
  for example 1 in [a]; a
    traverses all nodes
  for example def f **baz, &b; end
    traverses all nodes
  for example foo.fun
    traverses all nodes
  for example  %W[#@@1]
    traverses all nodes
  for example f{ |a| }
    traverses all nodes
  for example case 1; in 2; 3; else; 4; end
    traverses all nodes
  for example  :'#@@1'
    traverses all nodes
  for example def f ((*)); end
    traverses all nodes
  for example !(foo..bar)
    traverses all nodes
  for example meth (-1.3).abs
    traverses all nodes
  for example begin; meth; rescue => ex; bar; end
    traverses all nodes
  for example %s{a\
b}
    traverses all nodes
  for example p p{p(p);p p}, tap do end
    traverses all nodes
  for example  %x{#@1}
    traverses all nodes
  for example a, (b, c) = foo
    traverses all nodes
  for example foo::A = 1
    traverses all nodes
  for example Foo
    traverses all nodes
  for example foo.C += raise bar rescue nil
    traverses all nodes
  for example `foobar`
    traverses all nodes
  for example f{ |**baz, &b| }
    traverses all nodes
  for example a += b = raise :x
    traverses all nodes
  for example `a\
b`
    traverses all nodes
  for example foo >= 1
    traverses all nodes
  for example case foo; in x if true; nil; end
    traverses all nodes
  for example def f o=1, *r, &b; end
    traverses all nodes
  for example a @b do |c|;end
    traverses all nodes
  for example meth do; foo; rescue; bar; end
    traverses all nodes
  for example def self.foo; end
    traverses all nodes
  for example def f(foo, bar); end
    traverses all nodes
  for example fun (1).to_i
    traverses all nodes
  for example def f a, *r, &b; end
    traverses all nodes
  for example foo.fun bar
    traverses all nodes
  for example fun(foo, *bar)
    traverses all nodes
  for example class Foo < Bar; end
    traverses all nodes
  for example super()
    traverses all nodes
  for example class A; _1; end
    traverses all nodes
  for example case foo;
        in {Foo: 42
        }
          false
      ; end
    traverses all nodes
  for example def f foo: -1
; end
    traverses all nodes
  for example p <<~"E"
    x
  #{"  y"}
E
    traverses all nodes
  for example if foo then bar; end
    traverses all nodes
  for example while not (true) do end
    traverses all nodes
  for example def foo() a:b end
    traverses all nodes
  for example %W[foo #{bar}foo#@baz]
    traverses all nodes
  for example { foo: 2 }
    traverses all nodes
  for example case foo; in a: 1 then true; end
    traverses all nodes
  for example  %q{#@@1}
    traverses all nodes
  for example p <<~E
  x

  y
E
    traverses all nodes
  for example  %{#@1}
    traverses all nodes
  for example 'a\
b'
    traverses all nodes
  for example while class Foo; tap do end; end; break; end
    traverses all nodes
  for example case foo; in ^foo then nil; end
    traverses all nodes
  for example foo::Fun bar
    traverses all nodes
  for example <<`HERE`
foo
bar
HERE
    traverses all nodes
  for example def f (foo: 1, &b); end
    traverses all nodes
  for example f{ |a, o=1, p, &b| }
    traverses all nodes
  for example def x; ::A ||= 1; end
    traverses all nodes
  for example a b{c(d)}, 1.0 do end
    traverses all nodes
  for example def f o=1, p, &b; end
    traverses all nodes
  for example p :foo, {** proc do end, b: proc do end}
    traverses all nodes
  for example a b{c d}, /x/ do end
    traverses all nodes
  for example if foo..bar; end
    traverses all nodes
  for example a b{c(d)}, "x" do end
    traverses all nodes
  for example self::a, foo = foo
    traverses all nodes
  for example begin; meth; rescue; baz; ensure; bar; end
    traverses all nodes
  for example foo < 1
    traverses all nodes
  for example !/wat/
    traverses all nodes
  for example case foo; in a: 1, _a:, ** then true; end
    traverses all nodes
  for example $+
    traverses all nodes
  for example def x; self::A ||= 1; end
    traverses all nodes
  for example foo::a += 1
    traverses all nodes
  for example foo::C ||= raise bar rescue nil
    traverses all nodes
  for example f{ |a, *r, p, &b| }
    traverses all nodes
  for example defined? @foo
    traverses all nodes
  for example -42
    traverses all nodes
  for example fun() { }
    traverses all nodes
  for example /#)/x
    traverses all nodes
  for example f{ |*| }
    traverses all nodes
  for example foo = raise bar rescue nil
    traverses all nodes
  for example @foo, @@bar = *foo
    traverses all nodes
  for example p ->() do a() do end end
    traverses all nodes
  for example ?a
    traverses all nodes
  for example foo or bar
    traverses all nodes
  for example a b(c(d)), 1.0i do end
    traverses all nodes
  for example def f ((a, *)); end
    traverses all nodes
  for example <<-'HERE'
#@1
HERE
    traverses all nodes
  when given an unexpected AST
    with too few children
      raises debugging error
    with too many children
      raises debugging error
  for example 'foobar'
    traverses all nodes
  for example retry
    traverses all nodes
  when a class defines `on_block_pass`
    calls it for all block-pass arguments
  for example foo || bar
    traverses all nodes
  for example while class Foo a = tap do end; end; break; end
    traverses all nodes
  for example p <<~"E"
    x
  #{foo}
E
    traverses all nodes
  for example _2 = 1
    traverses all nodes
  for example @var = 10
    traverses all nodes
  for example meth 1 do end.fun bar
    traverses all nodes
  for example case foo; in [x, y, *z] then true; end
    traverses all nodes
  for example  `#@1`
    traverses all nodes
  for example `foo#{bar}baz`
    traverses all nodes
  for example "a\
b"
    traverses all nodes
  for example a b(c d), :e do end
    traverses all nodes
  for example 42.1r
    traverses all nodes
  for example def f foo:
; end
    traverses all nodes
  for example case foo; in 1 | 2 then true; end
    traverses all nodes
  for example def String.foo; end
    traverses all nodes
  for example a b(c d), /x/m do end
    traverses all nodes
  for example begin; rescue LoadError; else; end
    traverses all nodes
  for example case foo; in "#{ 'a' }": 1 then true; end
    traverses all nodes
  for example foo && bar
    traverses all nodes
  for example case foo; in **nil then true; end
    traverses all nodes
  for example f{  }
    traverses all nodes
  for example <<'HERE'
foo
bar
HERE
    traverses all nodes
  for example a b(c d), "x" do end
    traverses all nodes
  for example m ->(a: ->{_1}) {a}
    traverses all nodes
  for example ->{ }
    traverses all nodes
  for example meth 1 do end.fun(bar)
    traverses all nodes
  for example case 1; in 2; 3; else; end
    traverses all nodes
  for example fun (1) {}
    traverses all nodes
  for example foo and bar
    traverses all nodes
  for example while def self.foo a = tap do end; end; break; end
    traverses all nodes
  for example case foo; in a: then true; end
    traverses all nodes
  for example if /wat/; end
    traverses all nodes
  for example foo[0] += raise bar rescue nil
    traverses all nodes
  for example  "#@@1"
    traverses all nodes
  for example until foo do meth end
    traverses all nodes
  for example p <<~E
          x
  y
E
    traverses all nodes
  for example  %q{#@1}
    traverses all nodes
  for example def foo
=begin
=end
end
    traverses all nodes
  for example foo - 1
    traverses all nodes
  for example case foo; in x unless true; nil; end
    traverses all nodes
  for example B::A += 1
    traverses all nodes
  for example :"a\
b"
    traverses all nodes
  for example meth 1 do end.fun bar do end
    traverses all nodes
  for example f{ |o=1, *r, &b| }
    traverses all nodes
  for example case foo; in ->{ 42 } then true; end
    traverses all nodes
  for example foo = raise(bar) rescue nil
    traverses all nodes
  for example foo::fun bar
    traverses all nodes
  for example _1
    traverses all nodes
  for example foo, bar = meth rescue [1, 2]
    traverses all nodes
  for example def f (((a))); end
    traverses all nodes
  for example def f o=1, &b; end
    traverses all nodes
  for example f x: -> do meth do end end
    traverses all nodes
  for example foo (-1.3).abs
    traverses all nodes
  for example a ||= 1
    traverses all nodes
  for example fun(foo, :foo => 1)
    traverses all nodes
  for example 42
    traverses all nodes
  for example /foo#{bar}baz/
    traverses all nodes
  for example a b(c d), 1.0 do end
    traverses all nodes
  for example foo.a += m foo
    traverses all nodes
  for example foo[1, 2]
    traverses all nodes
  for example f{ |a, o=1, *r, p, &b| }
    traverses all nodes
  for example f (g rescue nil)
    traverses all nodes
  for example case foo; in "#{ %Q{a} }": then true; end
    traverses all nodes
  for example BEGIN { 1 }
    traverses all nodes
  for example case foo; in * then nil; end
    traverses all nodes
  for example p :foo, {a: proc do end, b: proc do end}
    traverses all nodes
  for example meth rescue bar
    traverses all nodes
  for example a b(c(d)), /x/ do end
    traverses all nodes
  for example case foo; in a:, b: then true; end
    traverses all nodes
  for example def foo(...); end
    traverses all nodes
  for example bar def foo; self.each do end end
    traverses all nodes
  for example foo | 1
    traverses all nodes
  for example var = 10; var
    traverses all nodes
  for example :'a\
b'
    traverses all nodes
  for example defined? foo
    traverses all nodes
  for example m { |**nil| }
    traverses all nodes
  for example [ 1, 2 => 3 ]
    traverses all nodes
  for example  %x{#@@1}
    traverses all nodes
  for example if foo...bar; end
    traverses all nodes
  for example %W()
    traverses all nodes
  for example def f ((a, *, p)); end
    traverses all nodes
  for example t=1;(foo)?t:T
    traverses all nodes
  for example m "#{}#{()}"
    traverses all nodes
  for example  %s{#@1}
    traverses all nodes
  for example [ 1 => 2 ]
    traverses all nodes
  for example a b(c(d)), 1.0 do end
    traverses all nodes
  for example f(a ? "a":1)
    traverses all nodes
  for example begin; meth; ensure; bar; end
    traverses all nodes
  for example case foo; in [*x, y] then true; end
    traverses all nodes
  for example meth until foo
    traverses all nodes
  for example foo = meth rescue bar
    traverses all nodes
  for example while class << self; tap do end; end; break; end
    traverses all nodes
  for example foo ^ 1
    traverses all nodes
  for example foo.m += raise(bar) rescue nil
    traverses all nodes
  for example m { |(foo, bar)| }
    traverses all nodes
  for example foo = bar = m foo
    traverses all nodes
  for example meth while foo
    traverses all nodes
  for example case foo; in 1, "a", [], {} then nil; end
    traverses all nodes
  for example def f *r, p, &b; end
    traverses all nodes
  for example f{ |a, o=1, &b| }
    traverses all nodes
  for example <<-"HERE"
#@1
HERE
    traverses all nodes
  for example foo += raise(bar) rescue nil
    traverses all nodes
  for example until foo; meth end
    traverses all nodes
  for example a b(c(d)), /x/m do end
    traverses all nodes
  for example break(foo)
    traverses all nodes
  for example self.a, self[1, 2] = foo
    traverses all nodes
  for example a b{c d}, 1 do end
    traverses all nodes
  for example def String::foo; end
    traverses all nodes
  for example a b{c(d)}, :e do end
    traverses all nodes
  for example foo::Fun()
    traverses all nodes
  for example case foo; in "#{ %Q{a} }": 1 then true; end
    traverses all nodes
  for example desc "foo" do end
    traverses all nodes
  for example def x(_4) end
    traverses all nodes
  for example proc {_1 = nil}
    traverses all nodes
  for example case foo;
        in {a: 1
        }
          false
      ; end
    traverses all nodes
  for example nil
    traverses all nodes
  for example  "#@1"
    traverses all nodes
  for example foo.a ||= 1
    traverses all nodes
  for example case foo; in A then true; end
    traverses all nodes
  for example %q(foobar)
    traverses all nodes
  for example f{ |*r, p, &b| }
    traverses all nodes
  for example while def self.foo; tap do end; end; break; end
    traverses all nodes
  for example  /#@@1/
    traverses all nodes
  for example def f foo = 1; end
    traverses all nodes
  for example a b{c d}, :e do end
    traverses all nodes
  for example %x{a\
b}
    traverses all nodes
  for example  %i[ #@@1 ]
    traverses all nodes
  for example p begin 1.times do 1 end end
    traverses all nodes
  for example /source/im
    traverses all nodes
  for example %{a\
b}
    traverses all nodes
  for example p <<~E
    x
  \  y
E
    traverses all nodes
  for example return()
    traverses all nodes
  for example a b{c(d)}, /x/ do end
    traverses all nodes
  for example Bar::Foo = 10
    traverses all nodes
  for example         case [__FILE__, __LINE__ + 1, __ENCODING__]
          in [__FILE__, __LINE__, __ENCODING__]
        end
    traverses all nodes
  for example @@foo
    traverses all nodes
  for example ->(a) { }
    traverses all nodes
  for example  '#@@1'
    traverses all nodes
  for example class Foo; end
    traverses all nodes
  for example 1..2
    traverses all nodes
  for example 42ri
    traverses all nodes
  for example <<~E
    1 \
    2
    3
E
    traverses all nodes
  for example foo[1, 2]
    traverses all nodes
  for example !(foo...bar)
    traverses all nodes
  for example module Bar::Foo; end
    traverses all nodes
  for example for a, b in foo; p a, b; end
    traverses all nodes
  for example begin ensure end
    traverses all nodes
  for example fun do end
    traverses all nodes
  for example a b(c(d)), 1.0r do end
    traverses all nodes
  for example m1 :k => m2 do; m3() do end; end
    traverses all nodes
  for example ...100
    traverses all nodes
  for example f{ | | }
    traverses all nodes
  for example begin; meth; rescue foo => ex; bar; end
    traverses all nodes
  for example next
    traverses all nodes
  for example f{ |a, &b| }
    traverses all nodes
  for example 1..
    traverses all nodes
  for example if foo; bar; else baz; end
    traverses all nodes
  for example begin; meth; rescue; baz; else foo; ensure; bar end
    traverses all nodes
  for example assert dogs
    traverses all nodes
  for example def until; end
    traverses all nodes
  for example 1.33
    traverses all nodes
  for example def f ((*r, p)); end
    traverses all nodes
  for example -> do rescue; end
    traverses all nodes
  for example fun (1)
    traverses all nodes
  for example def f ((a, *r, p)); end
    traverses all nodes
  for example /#{1}(?<match>bar)/ =~ 'bar'
    traverses all nodes
  for example f{ |;
a
| }
    traverses all nodes
  for example yield
    traverses all nodes
  for example def f a, *r, p, &b; end
    traverses all nodes
  for example # Extracted from `parser` gem.
# Add the following code at the beginning of `def assert_parses`:
#
#    File.open('./out.rb', 'a+') do |f|
#      f << code << "\n\n#----\n" if versions.include? '2.7'
#    end

alias $a $b
    traverses all nodes
  for example case foo; in A(x:) then true; end
    traverses all nodes
  for example case foo; in x, then nil; end
    traverses all nodes
  for example %I{a\
b}
    traverses all nodes
  for example return(foo)
    traverses all nodes
  for example def f(foo); end
    traverses all nodes
  for example foo += meth rescue bar
    traverses all nodes
  for example not()
    traverses all nodes
  for example assert do: true
    traverses all nodes
  for example def f(**nil); end
    traverses all nodes
  for example def _5; end
    traverses all nodes
  for example foo, bar, baz = 1, 2
    traverses all nodes
  for example yield()
    traverses all nodes
  for example class Foo < a:b; end
    traverses all nodes
  for example a = 1; a b: 1
    traverses all nodes
  for example case foo; in x, y, then nil; end
    traverses all nodes
  for example foo, bar = m foo
    traverses all nodes
  for example a += 1
    traverses all nodes
  for example def self.m; _1; end
    traverses all nodes
  for example def String=; end
    traverses all nodes
  for example f { || a:b }
    traverses all nodes
  for example defined?(foo)
    traverses all nodes
  for example foo <=> 1
    traverses all nodes
  for example %w{a\
b}
    traverses all nodes
  for example begin; meth; rescue Exception; bar; end
    traverses all nodes
  for example f{ |&b| }
    traverses all nodes
  for example !m foo
    traverses all nodes
  for example case foo; in ...2 then true; end
    traverses all nodes
  for example case foo; in a: 1, b: 2 then true; end
    traverses all nodes
  for example super
    traverses all nodes
  for example fun(f bar)
    traverses all nodes
  for example p :foo, {:a => proc do end, b: proc do end}
    traverses all nodes
  for example [1, *foo, 2]
    traverses all nodes
  for example ~foo
    traverses all nodes
  for example !foo
    traverses all nodes
  for example a b(c d), /x/ do end
    traverses all nodes
  for example -> (a) { }
    traverses all nodes
  for example -> do end
    traverses all nodes
  for example super foo, bar do end
    traverses all nodes
  for example %q{a\
b}
    traverses all nodes
  for example p <<~E
  x
E
    traverses all nodes
  for example class << foo; _1; end
    traverses all nodes
  for example case foo; in A[1, 2] then true; end
    traverses all nodes
  for example fun(:foo => 1)
    traverses all nodes
  for example @a |= 1
    traverses all nodes
  for example def foo(...); super(...); end
    traverses all nodes
  for example foo != 1
    traverses all nodes
  for example 1...
    traverses all nodes
  for example break()
    traverses all nodes
  for example f{ |o=1, *r, p, &b| }
    traverses all nodes
  for example while def foo; tap do end; end; break; end
    traverses all nodes
  for example super do end
    traverses all nodes
  for example fun (1
)
    traverses all nodes
  for example  %r{#@1}
    traverses all nodes
  for example foo.A = 1
    traverses all nodes
  for example a #
  #
.foo
    traverses all nodes
  for example if (bar; a, b = foo); end
    traverses all nodes
  for example case foo; in ::A then true; end
    traverses all nodes
  for example foo[bar, :baz => 1,]
    traverses all nodes
  for example # coding:utf-8
         "\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB2\xD0\xB5\xD1\x80\xD0\xBA\xD0\xB0"
    traverses all nodes
  for example  %I[#@@1]
    traverses all nodes
  for example case foo; when 'bar', 'baz'; bar; end
    traverses all nodes
  for example foo += raise bar rescue nil
    traverses all nodes
  for example foo[0, 1] += 2
    traverses all nodes
  for example -> * { }
    traverses all nodes
  for example $var = 10
    traverses all nodes
  for example case foo; in "a": then true; end
    traverses all nodes
  for example a b{c(d)}, /x/m do end
    traverses all nodes
  for example def m; class << self; module M; end; end; end
    traverses all nodes
  for example case foo; in [x, y] then true; end
    traverses all nodes
  for example a b{c(d)}, 1 do end
    traverses all nodes
  for example case; when foo; 'foo'; else 'bar'; end
    traverses all nodes
  for example <<-`HERE`
#@@1
HERE
    traverses all nodes
  for example foo[1, 2] = 3
    traverses all nodes
  for example fun(1) { }
    traverses all nodes
  for example unless foo then bar; else baz; end
    traverses all nodes
  for example [1, *foo]
    traverses all nodes
  for example ((b, )) = foo
    traverses all nodes
  for example break
    traverses all nodes
  for example foo::fun
    traverses all nodes
  for example super foo
    traverses all nodes
  for example case foo; in "#{ 'a' }": then true; end
    traverses all nodes
  for example begin; meth; rescue; foo; end
    traverses all nodes
  for example foo[0, 1] += m foo
    traverses all nodes
  for example redo
    traverses all nodes
  for example case foo;
        in {a:
              2}
          false
      ; end
    traverses all nodes
  for example def END; end
    traverses all nodes
  for example case foo; when 1, *baz; bar; when *foo; end
    traverses all nodes
  for example while foo; meth end
    traverses all nodes
  for example break fun foo do end
    traverses all nodes
  for example module A; _1; end
    traverses all nodes
  for example foo[:baz => 1,]
    traverses all nodes
  for example case foo; when 'bar' then bar; end
    traverses all nodes
  for example begin end
    traverses all nodes
  for example def self::foo; end
    traverses all nodes
  for example a #
  #
&.foo
    traverses all nodes
  for example foo && (a, b = bar)
    traverses all nodes
  for example ::A += 1
    traverses all nodes
  for example { 'foo': 2 }
    traverses all nodes
  for example a b{c(d)}, 1.0i do end
    traverses all nodes
  for example foo !~ 1
    traverses all nodes
  for example def f *r, &b; end
    traverses all nodes
  for example for a in foo; p a; end
    traverses all nodes
  for example foo = m foo
    traverses all nodes
  for example f{ |a, *| }
    traverses all nodes
  for example def f ; end
    traverses all nodes
  for example f{ |a, o=1, o1=2, *r, &b| }
    traverses all nodes
  for example def f a, o=1, *r, &b; end
    traverses all nodes
  for example fun(*bar, &baz)
    traverses all nodes
  for example case foo; in A(1, 2) then true; end
    traverses all nodes
  for example A += 1
    traverses all nodes
  for example module ::Foo; end
    traverses all nodes
  for example unless foo; bar; else baz; end
    traverses all nodes
  for example %W[foo #{bar}]
    traverses all nodes
  for example {a: if true then 42 end}
    traverses all nodes
  for example ()
    traverses all nodes
  for example f{ |o=1, &b| }
    traverses all nodes
  for example case foo; in (1) then true; end
    traverses all nodes
  for example if foo; bar; end
    traverses all nodes
  for example case foo; in 1... then true; end
    traverses all nodes
  for example m ->(a = ->{_1}) {a}
    traverses all nodes
  for example a b{c d}, 1.0r do end
    traverses all nodes
  for example foo >> 1
    traverses all nodes
  for example foo % 1
    traverses all nodes
  for example foo::(1)
    traverses all nodes
  for example meth 1 do end.fun(bar) {}
    traverses all nodes
  for example __LINE__
    traverses all nodes
  for example case foo; in A[] then true; end
    traverses all nodes
  for example $10
    traverses all nodes
  for example %i[foo bar]
    traverses all nodes
  for example f{ |a, *s| }
    traverses all nodes
  for example proc {|_3|}
    traverses all nodes
  for example <<-`HERE`
#@1
HERE
    traverses all nodes
  for example __FILE__
    traverses all nodes
  for example fun(&bar)
    traverses all nodes
  for example def f &b; end
    traverses all nodes
  for example ::Foo = 10
    traverses all nodes
  for example foo::a = 1
    traverses all nodes
  for example Bar::Foo
    traverses all nodes
  for example %i{a\
b}
    traverses all nodes
  for example foo.m += raise bar rescue nil
    traverses all nodes
  for example "#{-> foo {}}"
    traverses all nodes
  for example -> a: 1 { }
    traverses all nodes
  for example break foo
    traverses all nodes
  for example foo === 1
    traverses all nodes
  for example def foo(_a, _a); end
    traverses all nodes
  for example bar unless foo
    traverses all nodes
  for example { 'foo': 2, 'bar': {}}
    traverses all nodes
  for example fun(foo, :foo => 1, &baz)
    traverses all nodes
  for example case foo; in x then x; end
    traverses all nodes
  for example p :foo, {"a": proc do end, b: proc do end}
    traverses all nodes
  for example begin meth end until foo
    traverses all nodes
  for example def f *, **; end
    traverses all nodes
  for example case foo; in "#{ %q{a} }": then true; end
    traverses all nodes
  for example def foo(_, _); end
    traverses all nodes
  for example case foo; in "a": 1 then true; end
    traverses all nodes
  for example foo&.bar {}
    traverses all nodes
  for example def f(**foo); end
    traverses all nodes
  for example -2.0 ** 10
    traverses all nodes
  for example /\xa8/n =~ ""
    traverses all nodes
  for example true
    traverses all nodes
  for example /a\
b/
    traverses all nodes
  for example foo::fun (1) {}
    traverses all nodes
  for example a b(c(d)), "x" do end
    traverses all nodes
  for example f{ |a| }
    traverses all nodes
  for example foo.fun (1) {}
    traverses all nodes
  for example -> (arg={}) {}
    traverses all nodes
  for example if foo
then bar end
    traverses all nodes
  for example p <<~E
  E
    traverses all nodes
  for example def foo(...); bar(...); end
    traverses all nodes
  for example a b{c d}, "x" do end
    traverses all nodes
  for example def foo
 a:b end
    traverses all nodes
  for example <<-"HERE"
a\
b
HERE
    traverses all nodes
  for example case foo; in *x, y, z then nil; end
    traverses all nodes
  for example undef foo, :bar, :"foo#{1}"
    traverses all nodes
  for example %w[]
    traverses all nodes
  for example alias :foo bar
    traverses all nodes
  for example <<-`HERE`
a\
b
HERE
    traverses all nodes
  for example for a in foo do p a; end
    traverses all nodes
  for example -foo
    traverses all nodes
  for example END { 1 }
    traverses all nodes
  for example if foo; bar; elsif baz; 1; else 2; end
    traverses all nodes
  for example meth 1 do end.fun {}
    traverses all nodes
  for example foo[0, 1] ||= 2
    traverses all nodes
  for example a b(c(d)), 1 do end
    traverses all nodes
  for example ->(a; foo, bar) { }
    traverses all nodes
  for example next(foo)
    traverses all nodes
  for example foo * 1
    traverses all nodes
  for example alias $a $+
    traverses all nodes
  for example fun(*bar)
    traverses all nodes
  for example false ? raise {} : tap {}
    traverses all nodes
  for example foo::m += raise bar rescue nil
    traverses all nodes
  for example foo + 1
    traverses all nodes
  for example def BEGIN; end
    traverses all nodes
  for example false
    traverses all nodes
  for example fun(1)
    traverses all nodes
  for example foo = baz, *bar
    traverses all nodes
  for example a #
#
.foo
    traverses all nodes
  for example case foo; in 1.. then true; end
    traverses all nodes
  for example a b{c d}, 1.0i do end
    traverses all nodes
  for example def f o=1, *r, p, &b; end
    traverses all nodes
  for example case foo; in **a then true; end
    traverses all nodes
  for example case foo; in [x, *y, z] then true; end
    traverses all nodes
  for example @foo
    traverses all nodes
  for example 42.1i
    traverses all nodes
  for example %i[]
    traverses all nodes
  for example /(?<match>bar)/ =~ 'bar'; match
    traverses all nodes
  for example case foo; in ..2 then true; end
    traverses all nodes
  for example def f(foo:); end
    traverses all nodes
  for example fun (f bar)
    traverses all nodes
  for example yield foo
    traverses all nodes
  for example def String; end
    traverses all nodes
  for example a &&= 1
    traverses all nodes
  for example "#@a #@@a #$a"
    traverses all nodes
  for example @@var |= 10
    traverses all nodes
  for example (foo, bar) = 1, 2
    traverses all nodes
  for example a&.b = 1
    traverses all nodes
  for example  %Q{#@1}
    traverses all nodes
  for example p <<~`E`
    x
  #{foo}
E
    traverses all nodes
  for example foo = *bar
    traverses all nodes
  for example a = b = raise :x
    traverses all nodes
  for example  %Q{#@@1}
    traverses all nodes
  for example meth 1 do end::fun bar
    traverses all nodes
  for example f{ |a, *s, &b| }
    traverses all nodes
  for example f{ |foo: 1, &b| }
    traverses all nodes
  for example ::Foo
    traverses all nodes
  for example { 1 => 2 }
    traverses all nodes
  for example proc {_1 = nil}
    traverses all nodes
  for example ->{ }
    traverses all nodes
  for example m do _1 + _9 end
    traverses all nodes
  for example foo == 1
    traverses all nodes
  for example %W{a\
b}
    traverses all nodes
  for example f{ |;a| }
    traverses all nodes
  for example begin foo!; bar! end
    traverses all nodes
  for example def m; class << self; class C; end; end; end
    traverses all nodes
  for example foo
    traverses all nodes
  for example  :"#@@1"
    traverses all nodes
  for example :"foo#{bar}baz"
    traverses all nodes
  for example p <<~E
E
    traverses all nodes
  for example return
    traverses all nodes
  for example -1.33
    traverses all nodes
  for example { 1 => 2, :foo => "bar" }
    traverses all nodes
  for example fun!
    traverses all nodes
  for example %W"#{1}"
    traverses all nodes
  for example self.A, foo = foo
    traverses all nodes
  for example Foo = 10
    traverses all nodes
  for example foo::C ||= raise(bar) rescue nil
    traverses all nodes
  for example next foo
    traverses all nodes
  for example if (a, b = foo); end
    traverses all nodes
  for example foo[0] += raise(bar) rescue nil
    traverses all nodes
  for example foo "#{(1+1).to_i}" do; end
    traverses all nodes
  for example def f a, o=1, &b; end
    traverses all nodes
  for example while class << self; a = tap do end; end; break; end
    traverses all nodes
  for example <<-'HERE'
#@@1
HERE
    traverses all nodes
  for example 42.1ri
    traverses all nodes
  for example f{ |a,| }
    traverses all nodes
  for example case foo; in [x, *, y] then true; end
    traverses all nodes
  for example not(foo)
    traverses all nodes
  for example a = b += raise :x
    traverses all nodes
  for example case foo; in A[x:] then true; end
    traverses all nodes
  for example -> { _1 + _9}
    traverses all nodes
  for example foo += m foo
    traverses all nodes
  for example __ENCODING__
    traverses all nodes
  for example  %i[ #@1 ]
    traverses all nodes
  for example unless foo then bar; end
    traverses all nodes
  for example %Q{a\
b}
    traverses all nodes
  for example foo ? 1 : 2
    traverses all nodes
  for example case foo;
        in {a:
        }
          true
      ; end
    traverses all nodes
  for example case foo; in ** then true; end
    traverses all nodes
  when a class defines on_arg
    calls it for all arguments
  for example unless foo; bar; end
    traverses all nodes
  for example foo[m bar]
    traverses all nodes
  for example @@var = 10
    traverses all nodes
  for example def f(foo=1, bar=2); end
    traverses all nodes
  for example <<HERE
foo
bar
HERE
    traverses all nodes
  for example a, *, c = bar
    traverses all nodes
  for example :foo
    traverses all nodes
  for example p <<~E
      x
        y
E
    traverses all nodes
  for example [/()\1/, ?#]
    traverses all nodes
  for example a b{c d}, 1.0 do end
    traverses all nodes
  for example f{ |*, &b| }
    traverses all nodes
  for example meth 1 do end::fun(bar)
    traverses all nodes
  for example true ? 1.tap do |n| p n end : 0
    traverses all nodes
  for example  %I[#@1]
    traverses all nodes
  for example f{ |*s, &b| }
    traverses all nodes
  for example m "#{[]}"
    traverses all nodes
  for example lambda{|;a|a}
    traverses all nodes
  for example foo || (a, b = bar)
    traverses all nodes
  for example next fun foo do end
    traverses all nodes
  for example foo.a += 1
    traverses all nodes
  for example ->(scope) {}; scope
    traverses all nodes
  for example <<-E
    1 \
    2
    3
E
    traverses all nodes
  for example f{ |*s| }
    traverses all nodes
  for example * = bar
    traverses all nodes
  for example def foo; end
    traverses all nodes
  for example case foo; in { a: 1, } then true; end
    traverses all nodes
  for example "#{1}"
    traverses all nodes
  for example a += b += raise :x
    traverses all nodes
  for example -> a: { }
    traverses all nodes
  for example f{ |o=1, p, &b| }
    traverses all nodes
  for example case foo; in x, *y, z then nil; end
    traverses all nodes
  for example case foo;
        in a: {b:}, c:
          p c
      ; end
    traverses all nodes
  for example foo / 1
    traverses all nodes
  for example $foo
    traverses all nodes
  for example a b{c(d)}, 1.0r do end
    traverses all nodes
  for example 42r
    traverses all nodes
  for example false ? raise do end : tap do end
    traverses all nodes
  for example a b(c d), 1 do end
    traverses all nodes
  for example  %w[ #@1 ]
    traverses all nodes
  for example <<-'HERE'
a\
b
HERE
    traverses all nodes
  for example f{ |a, *, &b| }
    traverses all nodes
  for example foo > 1
    traverses all nodes
  for example p <<~E
    x
  \  y
E
    traverses all nodes
  for example case foo; in 1; end
    traverses all nodes
  for example def foo(...); bar(...); end
    traverses all nodes
  for example foo =~ 1
    traverses all nodes
  for example case foo; when 'bar'; bar; else baz; end
    traverses all nodes
  for example  %w[ #@@1 ]
    traverses all nodes
  for example  `#@@1`
    traverses all nodes
  for example begin meth end while foo
    traverses all nodes
  for example case foo; in [x, y,] then true; end
    traverses all nodes
  for example +foo
    traverses all nodes
  for example m = -> *args do end
    traverses all nodes
  for example def f a, o=1, p, &b; end
    traverses all nodes
  for example o = {
a:
1
}
    traverses all nodes
  for example ::A, foo = foo
    traverses all nodes
  for example a, *b, c = bar
    traverses all nodes
  for example case foo; in { a: 1 } then true; end
    traverses all nodes
  for example f{ |a, c| }
    traverses all nodes
  for example if foo then bar; else baz; end
    traverses all nodes
  for example def f a, &b; end
    traverses all nodes
  for example p :foo, {proc do end => proc do end, b: proc do end}
    traverses all nodes
  for example m def x(); end; 1.tap do end
    traverses all nodes
  for example def f ((a, a1)); end
    traverses all nodes
  for example f{ |foo:| }
    traverses all nodes
  for example m a + b do end
    traverses all nodes
  for example fun(foo, *bar, &baz)
    traverses all nodes
  for example *b = bar
    traverses all nodes
  for example 1...2
    traverses all nodes
  for example fun () {}
    traverses all nodes
  for example if (bar); foo; end
    traverses all nodes
  for example p <<~E
  x
        y
E
    traverses all nodes
  for example m [], 1 do end
    traverses all nodes
  for example f{ |a| }
    traverses all nodes
  for example p <<~E
  x

y
E
    traverses all nodes
  for example def foo raise; raise A::B, ''; end
    traverses all nodes
  for example meth[] {}
    traverses all nodes
  for example a, *b = bar
    traverses all nodes
  for example foo, bar = 1, 2
    traverses all nodes
  for example case foo; in "#{ %q{a} }": 1 then true; end
    traverses all nodes
  for example tap (proc do end)
    traverses all nodes
  for example def a; @@var |= 10; end
    traverses all nodes
  for example def f(foo: 1); end
    traverses all nodes
  for example  :"#@1"
    traverses all nodes
  for example  %r{#@@1}
    traverses all nodes
  for example case foo; in x, y then nil; end
    traverses all nodes
  for example [1, 2]
    traverses all nodes
  for example def f ((a, *r)); end
    traverses all nodes
  for example def f a, o=1, *r, p, &b; end
    traverses all nodes
  for example case foo; in 1...2 then true; end
    traverses all nodes
  for example def f(*foo); end
    traverses all nodes
  for example case foo; when 'bar'; bar; end
    traverses all nodes
  for example case foo; in self then true; end
    traverses all nodes
  for example self::A, foo = foo
    traverses all nodes
  for example a ? b & '': nil
    traverses all nodes
  for example *b, c = bar
    traverses all nodes
  for example %I()
    traverses all nodes
  for example p -> { :hello }, a: 1 do end
    traverses all nodes
  for example -2 ** 10
    traverses all nodes
  for example module Foo; end
    traverses all nodes
  for example  %s{#@@1}
    traverses all nodes
  for example fun
    traverses all nodes
  for example m [] do end
    traverses all nodes
  for example  /#@1/
    traverses all nodes
  for example foo.C += raise(bar) rescue nil
    traverses all nodes

RuboCop::AST::DstrNode
  #value
    with interpolation
      is expected to eq "foo \#{bar} baz"
    with implicit concatenation
      is expected to eq "foo bar baz"
    with a multiline string
      is expected to eq "this is a multiline string"

Set#===
  tests for inclusion

RuboCop::AST::EnsureNode
  .new
    is expected to be a kind of RuboCop::AST::EnsureNode
  #body
    is expected to be sym type

RuboCop::AST::WhenNode
  #body
    with a then keyword
      is expected to be sym type
    without a then keyword
      is expected to be array type
  .new
    is expected to be a kind of RuboCop::AST::WhenNode
  #conditions
    with a single condition
      is expected to eq 1
      is expected to all be literal
    with a multiple conditions
      is expected to eq 3
      is expected to all be literal
  #branch_index
    is expected to eq 2
    is expected to eq 1
    is expected to eq 0
  #then?
    without a then keyword
      is expected not to be then
    with a then keyword
      is expected to be then
  #each_condition
    when passed a block
      yields all the conditions
    when not passed a block
      is expected to be a kind of Enumerator

RuboCop::AST::YieldNode
  #block_argument?
    is expected not to be block argument
  #arguments
    with a single splat argument
      is expected to eq 1
    with a single literal argument
      is expected to eq 1
    with multiple mixed arguments
      is expected to eq 2
    with no arguments
      is expected to be empty
    with multiple literal arguments
      is expected to eq 2
  #predicate_method?
    is expected not to be predicate method
  #comparison_method?
    is expected not to be comparison method
  #bang_method?
    is expected not to be bang method
  #setter_method?
    is expected not to be setter method
  #implicit_call?
    is expected not to be implicit call
  #dot?
    is expected not to be dot
  #first_argument
    with multiple literal arguments
      is expected to be sym type
    with no arguments
      is expected to be nil
    with multiple mixed arguments
      is expected to be sym type
    with a single literal argument
      is expected to be sym type
    with a single splat argument
      is expected to be splat type
  #last_argument
    with no arguments
      is expected to be nil
    with multiple mixed arguments
      is expected to be splat type
    with multiple literal arguments
      is expected to be sym type
    with a single splat argument
      is expected to be splat type
    with a single literal argument
      is expected to be sym type
  #const_receiver?
    is expected not to be const receiver
  #arguments?
    with no arguments
      is expected not to be arguments
    with a single literal argument
      is expected to be arguments
    with a single splat argument
      is expected to be arguments
    with multiple literal arguments
      is expected to be arguments
    with multiple mixed arguments
      is expected to be arguments
  #camel_case_method?
    is expected not to be camel case method
  #parenthesized?
    with arguments
      when not using parentheses
        is expected not to be parenthesized
      when using parentheses
        is expected to be parenthesized
    with no arguments
      when using parentheses
        is expected to be parenthesized
      when not using parentheses
        is expected not to be parenthesized
  #block_node
    is expected to be nil
  #splat_argument?
    with no arguments
      is expected not to be splat argument
    with regular arguments
      is expected not to be splat argument
    with mixed arguments
      is expected to be splat argument
    with a splat argument
      is expected to be splat argument
  #receiver
    is expected to be nil
  #self_receiver?
    is expected not to be self receiver
  #block_literal?
    is expected not to be block literal
  #macro?
    is expected not to be macro
  #assignment_method?
    is expected not to be assignment method
  .new
    is expected to be a kind of RuboCop::AST::YieldNode
  #method_name
    is expected to eq :yield
  #double_colon?
    is expected not to be double colon
  #command?
    when argument is a string
      is expected to be command "yield"
    when argument is a symbol
      is expected to be command :yield
  #method?
    when message does not match
      when argument is a string
        is expected not to be method "foo"
      when argument is a symbol
        is expected not to be method :foo
    when message matches
      when argument is a symbol
        is expected to be method :yield
      when argument is a string
        is expected to be method "yield"
  #operator_method?
    is expected not to be operator method

RuboCop::AST::BlockNode
  #delimiters
    when enclosed in braces
      is expected to eq ["{", "}"]
    when enclosed in do-end keywords
      is expected to eq ["do", "end"]
  .new
    is expected to be a kind of RuboCop::AST::BlockNode
  #void_context?
    when block method is each
      is expected to be void context
    when block method is not each
      is expected not to be void context
    when block method is tap
      is expected to be void context
  #opening_delimiter
    when enclosed in braces
      is expected to eq "{"
    when enclosed in do-end keywords
      is expected to eq "do"
  #single_line?
    when block is on several lines
      is expected not to be single line
    when block is on a single line
      is expected to be single line
  #braces?
    when enclosed in do-end keywords
      is expected not to be braces
    when enclosed in braces
      is expected to be braces
  #closing_delimiter
    when enclosed in do-end keywords
      is expected to eq "end"
    when enclosed in braces
      is expected to eq "}"
  #multiline?
    when block is on a single line
      is expected not to be multiline
    when block is on several lines
      is expected to be multiline
  #arguments?
    >= Ruby 2.7
      using numbered parameters
        is expected not to be arguments
    with multiple mixed arguments
      is expected to be arguments
    with a single argument
      is expected to be arguments
    with destructuring arguments
      is expected to be arguments
    with no arguments
      is expected not to be arguments
    with a single splat argument
      is expected to be arguments
  #arguments
    with a single literal argument
      is expected to eq 1
    with no arguments
      is expected to be empty
    with multiple mixed arguments
      is expected to eq 2
    with destructured arguments
      is expected to eq 2
    with a single splat argument
      is expected to eq 1
    >= Ruby 2.7
      using numbered parameters
        is expected to be empty
  #receiver
    with dot operator call
      is expected to eq "foo"
    with safe navigation operator call
      is expected to eq "foo"
  #argument_list
    all argument types
      is expected to eq [:a, :b, :c, :d, :e, :f, :g, :h, :i]
    with no arguments
      is expected to be empty
    >= Ruby 2.7
      using numbered parameters
        with skipped params
          is expected to eq [:_1, :_2, :_3, :_4, :_5, :_6, :_7]
        with sequential params
          is expected to eq [:_1, :_2]
  #lambda?
    when block belongs to a non-lambda method
      is expected not to be lambda
    when block belongs to a stabby lambda
      is expected to be lambda
    when block belongs to a method lambda
      is expected to be lambda
  #keywords?
    when enclosed in do-end keywords
      is expected to be keywords
    when enclosed in braces
      is expected not to be keywords

RuboCop::AST::Ext::Range
  #line_span
    accepts an `exclude_end` keyword argument
    returns the range of lines a range occupies

RuboCop::AST::CaseMatchNode
  when using Ruby 2.7 or newer
    #in_pattern_branches
      is expected to all be in pattern type
      is expected to eq 3
    #keyword
      is expected to eq "case"
    #each_in_pattern
      when not passed a block
        is expected to be a kind of Enumerator
      when passed a block
        yields all the conditions
    .new
      is expected to be a kind of RuboCop::AST::CaseMatchNode
    #else?
      with an else statement
        is expected to be else
      without an else statement
        is expected not to be else
    #branches
      when there is an else
        with empty else
          returns all the bodies
        with else body
          returns all the bodies
      when there is no else keyword
        returns only then when bodies
    #else_branch
      #else?
        without an else statement
          is expected to be nil
        with an empty else statement
          is expected to be empty else type
        with an else statement
          is expected to be sym type

RuboCop::AST::CaseNode
  #when_branches
    is expected to all be when type
    is expected to eq 3
  #else?
    without an else statement
      is expected not to be else
    with an else statement
      is expected to be else
  #keyword
    is expected to eq "case"
  #each_when
    when not passed a block
      is expected to be a kind of Enumerator
    when passed a block
      yields all the conditions
  #branches
    when there is no else keyword
      returns only then when bodies
    when compared to an IfNode
      returns the same
    when there is an else
      returns all the bodies
      with an empty else
        returns all the bodies
  .new
    is expected to be a kind of RuboCop::AST::CaseNode
  #else_branch
    #else?
      with an empty else statement
        is expected to be nil
      without an else statement
        is expected to be nil
      with an else statement
        is expected to be sym type

RuboCop::AST::NodePattern::Parser
  sequences
    parses unions of literals as a set
    parses capture vs repetition with correct priority
    expands ... in sequence head deep inside unions
    parses function calls
    parses simple sequences properly
    generates specialized nodes

RuboCop::AST::StrNode
  #character_literal?
    with a character literal
      is expected to be character literal
    with a normal string literal
      is expected not to be character literal
    with a heredoc
      is expected not to be character literal
  #heredoc?
    with a normal string
      is expected not to be heredoc
    with a heredoc
      is expected to be heredoc
    with a string with interpolation
      is expected not to be heredoc
  .new
    with a heredoc
      is expected to be a kind of RuboCop::AST::StrNode
    with a normal string
      is expected to be a kind of RuboCop::AST::StrNode
    with a string with interpolation
      is expected to be a kind of RuboCop::AST::StrNode

RuboCop::AST::NodePattern
  unions
    with a nested sequence
      is expected to match code s(:const, nil, :Const) and :method
    at the top level
      containing integer literals
        is expected to match code s(:int, 10) and :abs
      containing string literals
        is expected to match code s(:str, "a") and :upcase
      containing mixed node and literals
        is expected to match code nil and :obj
      containing multiple []
        on a node which meets all requirements of the second []
          is expected to match code 2.4
        on a node which meets some requirements but not all
          behaves like nonmatching
            doesn't match
        on a node which meets all requirements of the first []
          is expected to match code 3
      containing symbol literals
        when the AST has a matching symbol
          is expected to match code s(:send, nil, :obj) and :b
        when the AST does not have a matching symbol
          behaves like nonmatching
            doesn't match
    variadic
      multiple
        works for complex cases
      with fixed terms
        works for cases with fixed arity before and after union
        works for cases with variadic terms before and after union
        works for cases with variadic terms after union
      with variadic terms
        works for cases with variadic terms after union
        works for cases with variadic terms before and after union
        works for cases with fixed arity before and after union
    nested inside a sequence
      is expected to match code s(:const, nil, :Const) and :method
  sequence with trailing ...
    on a node with a different type
      behaves like nonmatching
        doesn't match
    on a node with fewer children, with a wildcard preceding
      behaves like nonmatching
        doesn't match
    on a node with the same type and more children
      with 1 child more
        is expected to match code s(:int, 1), :blah, and s(:int, 1)
      with 2 children more
        is expected to match code s(:int, 1), :blah, s(:int, 1), and s(:sym, :something)
    on a node with non-matching children
      behaves like nonmatching
        doesn't match
    on a node with the same type and fewer children
      behaves like nonmatching
        doesn't match
    on a node with the same type and exact number of children
      is expected to match code s(:int, 1) and :blah
  simple sequence
    on a node with the same type and matching children
      is expected to match code s(:int, 1), :+, and s(:int, 1)
    on a node with too many children
      behaves like nonmatching
        doesn't match
    with a nested sequence in non-head position
      is expected to match code s(:send,
  s(:send, nil, :obj), :a) and :b
    on a node with a different type
      behaves like nonmatching
        doesn't match
    on a node with the same type and non-matching children
      with non-matching receiver type
        behaves like nonmatching
          doesn't match
      with non-matching selector
        behaves like nonmatching
          doesn't match
    with a nested sequence in head position
      behaves like invalid
        is invalid
  funcalls
    without extra arguments
      is expected to match code :a and s(:int, 1)
    with multiple arguments
      is expected to match code s(:str, "c"), "a", and "d"
    with one argument
      is expected to match code s(:str, "foo") and "foo"
  bare node type
    #pattern
      returns the pattern
    on a node with the same type
      is expected to match code s(:send, nil, :obj) and :method
    marshal compatibility
      is expected to match code s(:send, nil, :obj) and :method
    on a node with a different type
      behaves like nonmatching
        doesn't match
    #dup
      is expected to match code s(:send, nil, :obj) and :method
    #to_s
      is instructive
    on a node with a matching, hyphenated type
      is expected to match code s(:lvasgn, :a), :+, and s(:int, 1)
    yaml compatibility
      is expected to match code s(:send, nil, :obj) and :method
    #==
      returns true iff the patterns are similar
  descend
    with an immediate match
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a literal match
      is expected to match code s(:int, 1) and s(:array,
  s(:array,
    s(:int, 2),
    s(:int, 3),
    s(:array,
      s(:array,
        s(:int, 5)))),
  s(:int, 4))
    nested
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    without match
      behaves like nonmatching
        doesn't match
    with a match multiple levels, depth first
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
  regexp
    matches symbols or strings
  in any order
    with an ellipsis
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    without ellipsis
      with matching children
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      with too many children
        behaves like nonmatching
          doesn't match
      with too few children
        behaves like nonmatching
          doesn't match
    invalid
      nested
        behaves like invalid
          is invalid
      doubled with ellipsis in wrong order
        behaves like nonmatching
          doesn't match
      at the beginning of a sequence
        behaves like invalid
          is invalid
      doubled with ellipsis
        behaves like multiple capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
      containing ellipsis not at the end
        behaves like invalid
          is invalid
      with an ellipsis inside and outside
        behaves like multiple capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
    doubled
      separated by fixed argument
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      separated by an ellipsis
        behaves like multiple capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
    captured
      without ellipsis
        behaves like single capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
    with a captured ellipsis
      nested
        behaves like multiple capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
      matching all children
        behaves like single capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      matching non sequential children
        behaves like single capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
  captures on ...
    after a child
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining wildcard at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining [] at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining literal at the end
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with no remaining pattern at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining set at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with remaining patterns at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining node type at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    at the very beginning of a sequence
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    with a remaining sequence at the end
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a remaining capture at the end
      behaves like multiple capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
  node type
    in seq head
      on a child with a different type
        behaves like nonmatching
          doesn't match
      on a node with the same type
        is expected to match code s(:ivar, :@ivar), :+, and s(:int, 2)
    for a child
      on a child litteral
        behaves like nonmatching
          doesn't match
      on a child with a different type
        behaves like nonmatching
          doesn't match
      on a child with the same type
        is expected to match code s(:send, nil, :foo) and :bar
  captures which also perform a match
    on a sequence
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    when nested
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    on a node type
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    on a set
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    on []
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    on a literal
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
  ellipsis
    with a wildcard at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
    preceding multiple captures
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a set at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
    preceding a capture
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with [] at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
    at the very beginning of a sequence
      is expected to match code s(:int, 10), :*, and s(:int, 1)
    with a nodetype at the end, but no remaining child to match it
      behaves like nonmatching
        doesn't match
    with a nested sequence at the end, but no remaining child
      behaves like nonmatching
        doesn't match
  caret (ascend)
    within sequence
      in head
        is expected to match code 1
        of a sequence
          is expected to match code 1
      not in head
        is expected to match code s(:int, 1) and :inc
        of a sequence
          is expected to match code s(:int, 1) and :inc
    repeated twice
      is expected to match code 1
    used with a node type
      which matches
        is expected to match code 1
      which doesn't match
        behaves like nonmatching
          doesn't match
    using unification to match self within parent
      with self in the right position
        is expected to match code 2
      with self in the wrong position
        behaves like nonmatching
          doesn't match
    inside a union
      is expected to match code "abc"
    inside an intersection
      is expected to match code 1
  predicates
    with multiple arguments
      for which the predicate is true
        is expected to match code s(:str, "c"), "a", and "d"
      for which the predicate is false
        behaves like nonmatching
          doesn't match
    when captured
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    at head position of a sequence
      is expected to match code s(:int, 1) and :inc
    when negated
      is expected to match code s(:int, 1) and :inc
    applied to an integer for which the predicate is false
      behaves like nonmatching
        doesn't match
    in root position
      is expected to match code s(:int, 1) and :inc
      with name containing a numeral
        is expected to match code s(:int, 1) and :inc
    with a constant argument
      for which the predicate is false
        behaves like nonmatching
          doesn't match
      for which the predicate is true
        is expected to match code s(:int, 1), :+, and s(:int, 2)
    when in last-child position, but all children have already been matched
      behaves like nonmatching
        doesn't match
    with a named argument
      when not given
        raises an error
      for which the predicate is true
        is expected to match code s(:send,
  s(:int, 1), :+,
  s(:int, 2)) and {:param=>1}
      with extra arguments
        raises an error
      for which the predicate is false
        behaves like nonmatching
          doesn't match
    applied to an integer for which the predicate is true
      is expected to match code s(:int, 1) and :inc
    with an expression argument
      for which the predicate is false
        behaves like nonmatching
          doesn't match
      for which the predicate is true
        is expected to match code s(:int, 2), :+, and s(:float, 2.0)
    with one extra argument
      for which the predicate is true
        is expected to match code s(:send,
  s(:int, 1), :+,
  s(:int, 2)) and 1
      for which the predicate is false
        behaves like nonmatching
          doesn't match
  .descend
    yields the given argument if it is not a Node
    yields all children depth first
  literals
    double quoted string literals
      is expected to match code "foo"
    single quoted string literals
      is expected to match code "foo"
    negative float literals
      is expected to match code -2.5
    positive float literals
      is expected to match code 1.0
    negative integer literals
      is expected to match code -100
    bare literal
      on a node
        behaves like nonmatching
          doesn't match
      on a matching literal
        is expected to match code :bar
    symbol literals
      is expected to match code :foo
  captures on a wildcard
    in head position in a sequence against literal (bug #5470)
      behaves like nonmatching
        doesn't match
    nested in any child
      behaves like multiple capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    in a nested sequence
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    in head position in a sequence
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    in non-head position in a sequence
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    at the root level
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    in head position in a sequence against nil (bug #5470)
      behaves like nonmatching
        doesn't match
  commas
    with commas randomly strewn around
      behaves like invalid
        is invalid
  bad syntax
    with unmatched opening paren and `...`
      behaves like invalid
        is invalid
    with unmatched closing paren
      behaves like invalid
        is invalid
    with empty parentheses
      behaves like invalid
        is invalid
    with negated closing paren
      behaves like invalid
        is invalid
    with unmatched closing curly
      behaves like invalid
        is invalid
    with leading comma in arg list
      behaves like invalid
        is invalid
    with doubled comma in arg list
      behaves like invalid
        is invalid
    with empty intersection
      behaves like invalid
        is invalid
    with unmatched opening paren
      behaves like invalid
        is invalid
    with negated ellipsis
      behaves like invalid
        is invalid
    with unsupported subsequence in seq head within union
      behaves like invalid
        is invalid
    with variadic unions where not supported
      behaves like invalid
        is invalid
    with empty union subsequence in seq head
      behaves like invalid
        is invalid
    with empty union
      behaves like invalid
        is invalid
    with negated closing curly
      behaves like invalid
        is invalid
    with doubled ellipsis
      is expected to match code "foo"
    with unmatched opening curly
      behaves like invalid
        is invalid
  comments
    behaves like single capture
      yields captured value(s) and returns true if there is a block
      returns captured values if there is no block
  macros
    with a pattern with captures
      def_node_matcher
        when called on matching code
          is expected to eq :hello
        when it errors
          raises an error with the right location
        when called on non-matching code
          behaves like nonmatching
            doesn't match
      def_node_search
        with a predicate name
          when called on matching code
            is expected to match code nil, :foo, s(:sym, :hello), and s(:sym, :world)
          when called on non-matching code
            behaves like nonmatching
              doesn't match
          when it errors
            raises an error with the right location
        without a predicate name
          when called on non-matching code
            returns an enumerator yielding nothing
          when called on matching code
            returns an enumerator yielding the captures
            when the pattern contains keyword_params
              returns an enumerator yielding the captures
              when helper is called with default keyword_params
                is overridden when calling the matcher
                and no value is given to the matcher
                  uses the defaults
                some defaults are not params
                  raises an error
          when it errors
            raises an error with the right location
    with a pattern with a namespaced call
      is expected to match code :hello
      when the value is not in the set
        behaves like nonmatching
          doesn't match
    with a pattern with a constant
      is expected to match code :hello
      when the value is not in the set
        behaves like nonmatching
          doesn't match
    with a pattern without captures
      def_node_search
        returns the method name
        with a predicate name
          when called on matching code
            is expected to match code nil, :foo, s(:sym, :hello), and s(:sym, :world)
          when it errors
            raises an error with the right location
          when called on non-matching code
            behaves like nonmatching
              doesn't match
        without a predicate name
          when called on matching code
            returns an enumerator yielding the matches
          when called on non-matching code
            returns an enumerator yielding nothing
          when it errors
            raises an error with the right location
      def_node_matcher
        returns the method name
        when called on non-matching code
          behaves like nonmatching
            doesn't match
        when it errors
          raises an error with the right location
        when called on matching code
          is expected to match code :hello
  params
    as named parameters
      when extra are provided
        raises an ArgumentError
      when provided as argument to match
        is expected to match code s(:int, 10) and {:foo=>#<Object:0xf47674d4>}
      when not provided
        raises an ArgumentError
    when negated, with a nonmatching value
      is expected to match code s(:const,
  s(:const, nil, :Namespace), :B) and :A
    without explicit number
      is expected to match code s(:const,
  s(:const, nil, :Namespace), :A), :A, and s(:const, nil, :Namespace)
    when preceded by ...
      is expected to match code s(:send,
  s(:int, 1), :+,
  s(:int, 10)) and s(:int, 10)
    param number zero
      in a position which does not match original target node
        behaves like nonmatching
          doesn't match
      in a position which matches original target node
        is expected to match code 1
    when captured
      behaves like single capture
        returns captured values if there is no block
        yields captured value(s) and returns true if there is a block
    when preceded by $...
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    when inside a union, with a matching value
      is expected to match code s(:int, 10) and 10
    when inside an intersection
      is expected to match code s(:int, 20), 10, and 20
    in a nested sequence
      is expected to match code s(:send,
  s(:send,
    s(:int, 5), :dec), :inc), :inc, and :dec
    in root position
      is expected to match code s(:int, 10) and s(:int, 10)
      in root position
        is expected to match code s(:int, 10) and #<Object:0xf4632848>
    when inside a union, with a nonmatching value
      behaves like nonmatching
        doesn't match
    when negated, with a matching value
      behaves like nonmatching
        doesn't match
  captures within union
    within nested sequences
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    with a different number of captures in each branch
      behaves like invalid
        is invalid
    with complex nesting
      behaves like multiple capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
    on simple subpatterns
      behaves like single capture
        yields captured value(s) and returns true if there is a block
        returns captured values if there is no block
  nil
    against a node pattern (bug #5470)
      behaves like nonmatching
        doesn't match
    nil value in AST
      behaves like nonmatching
        doesn't match
    nil literals
      is expected to match code
    nil value in AST, use nil? method
      is expected to match code nil and :foo
  repeated
    using *
      nested with multiple subcaptures
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      without capture
        is expected to match code s(:sym, :hello), s(:int, 1), s(:int, 2), and s(:int, 3)
      with multiple subcaptures
        behaves like multiple capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      with zero match
        behaves like single capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
      behaves like repeated pattern
        with one match
          behaves like single capture
            yields captured value(s) and returns true if there is a block
            returns captured values if there is no block
        with an ellipsis in the same sequence
          is expected to match code "[:hello, 1, 2, 3]"
        at beginning of sequence
          behaves like invalid
            is invalid
      with matching children
        behaves like single capture
          yields captured value(s) and returns true if there is a block
          returns captured values if there is no block
      with no match
        behaves like nonmatching
          doesn't match
    using ?
      behaves like repeated pattern
        with an ellipsis in the same sequence
          is expected to match code "[:hello, 1, 2, 3]"
        with one match
          behaves like single capture
            returns captured values if there is no block
            yields captured value(s) and returns true if there is a block
        at beginning of sequence
          behaves like invalid
            is invalid
      with too many matching children
        behaves like nonmatching
          doesn't match
      with zero match
        behaves like single capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
    using +
      with matching children
        behaves like single capture
          returns captured values if there is no block
          yields captured value(s) and returns true if there is a block
      behaves like repeated pattern
        at beginning of sequence
          behaves like invalid
            is invalid
        with one match
          behaves like single capture
            returns captured values if there is no block
            yields captured value(s) and returns true if there is a block
        with an ellipsis in the same sequence
          is expected to match code "[:hello, 1, 2, 3]"
      with zero match
        behaves like nonmatching
          doesn't match
  wildcards
    named wildcards
      within a sequence
        with values which cannot be unified
          behaves like nonmatching
            doesn't match
        unifying the node type with an argument
          is expected to match code s(:send, nil, :obj) and :send
        with values which can be unified
          is expected to match code s(:int, 5), :+, and s(:int, 5)
      within a sequence with other patterns intervening
        is expected to match code :@abc and s(:int, 22)
      at the root level
        is expected to match code s(:sclass,
  s(:self),
  s(:def, :something,
    s(:args),
    s(:int, 1))) and :freeze
      within a union
        confined to the union
          without unification
            is expected to match code s(:int, 2) and s(:int, 1)
          with partial unification
            that can not be unified
              behaves like nonmatching
                doesn't match
            matching the free branch
              is expected to match code s(:int, 2) and s(:int, 1)
            matching the unified branch
              is expected to match code s(:int, 5) and s(:int, 5)
        with a succeeding unifying constraint
          with branches without the wildcard
            encountered first
              behaves like invalid
                is invalid
            encountered after
              behaves like invalid
                is invalid
          with all branches with the wildcard
            that can not be unified
              behaves like nonmatching
                doesn't match
            matching the first branch
              is expected to match code s(:array,
  s(:int, 1),
  s(:int, 2)) and s(:int, 2)
            matching another branch
              is expected to match code s(:array,
  s(:int, 2),
  s(:int, 1)) and s(:int, 2)
        with a preceding unifying constraint
          matching a branch
            is expected to match code s(:int, 2) and s(:array,
  s(:int, 2),
  s(:int, 1))
          that can not be unified
            behaves like nonmatching
              doesn't match
      in head position of a sequence
        is expected to match code s(:int, 1), :+, and s(:send, nil, :a)
    unnamed wildcards
      at the root level
        is expected to match code s(:sclass,
  s(:self),
  s(:def, :something,
    s(:args),
    s(:int, 1))) and :freeze
      within a sequence with other patterns intervening
        is expected to match code :@abc and s(:int, 22)
      negated
        behaves like nonmatching
          doesn't match
      in head position of a sequence
        is expected to match code s(:int, 1), :+, and s(:send, nil, :a)
      within a sequence
        is expected to match code nil and :Const
  negation
    on a string
      with a non-matching symbol
        is expected to match code s(:str, "bar") and :upcase
      with a matching string
        behaves like nonmatching
          doesn't match
    on square brackets
      with a node which meets only 1 requirement of []
        is expected to match code 1
      with a node which meets all requirements of []
        behaves like nonmatching
          doesn't match
    when nested in complex ways
      with (send int :- int)
        is expected to match code s(:int, 1), :-, and s(:int, 1)
      with (send str :+ (send str :to_i))
        is expected to match code s(:str, "abc"), :+, and s(:send,
  s(:str, "1"), :to_i)
      with (send str :<< str)
        behaves like nonmatching
          doesn't match
    on a sequence
      with a matching node
        behaves like nonmatching
          doesn't match
      with a node with non-matching children
        is expected to match code :@b and s(:int, 1)
      with a node of different type
        is expected to match code :@@a and s(:int, 1)
    on a symbol
      with a non-matching symbol
        is expected to match code s(:send, nil, :obj) and :xyz
      with a non-matching symbol, but too many children
        behaves like nonmatching
          doesn't match
      with a matching symbol
        behaves like nonmatching
          doesn't match
    on a set
      with a matching value
        behaves like nonmatching
          doesn't match
      with a non-matching value
        is expected to match code :@a and s(:int, 3)

RuboCop::AST::FloatNode
  .new
    is expected to be a kind of RuboCop::AST::FloatNode
  #value
    is expected to eq 1.5
  #sign?
    explicit positive float
      is expected to be sign
    explicit negative float
      is expected to be sign

RuboCop::AST::OpAsgnNode
  #operator
    with |=
      is expected to eq :|
    with /=
      is expected to eq :/
    with &=
      is expected to eq :&
    with +=
      is expected to eq :+
    with -=
      is expected to eq :-
    with *=
      is expected to eq :*
    with %=
      is expected to eq :%
    with **=
      is expected to eq :**
  #assignment_node
    is expected to be a kind of RuboCop::AST::AsgnNode
  #name
    is expected to eq :var
  .new
    with an `op_asgn_node` node
      is expected to be a kind of RuboCop::AST::OpAsgnNode
  #expression
    is expected to eq s(:send, nil, :value)

RuboCop::AST::DefNode
  #receiver
    with a singleton method definition
      is expected to be const type
    with a class method definition
      is expected to be self type
    with an instance method definition
      is expected to be nil
  #comparison_method?
    with a regular method
      is expected not to be comparison method
    with a comparison method
      is expected to be comparison method
  #block_argument?
    with mixed arguments
      is expected to be block argument
    with a block argument
      is expected to be block argument
    with regular arguments
      is expected not to be block argument
    with no arguments
      is expected not to be block argument
  #assignment_method?
    with a comparison method
      is expected not to be assignment method
    with a regular method
      is expected not to be assignment method
    with a bracket assignment method
      is expected to be assignment method
    with an assignment method
      is expected to be assignment method
  #operator_method?
    with a unary operator method
      is expected to be operator method
    with a binary operator method
      is expected to be operator method
    with a setter method
      is expected not to be operator method
    with a regular method
      is expected not to be operator method
  #last_argument
    with a single rest argument
      is expected to be restarg type
    with multiple mixed arguments
      is expected to be restarg type
    with a single regular argument
      is expected to be arg type
    with a single keyword argument
      is expected to be kwoptarg type
    with multiple regular arguments
      is expected to be arg type
    with no arguments
      is expected to be nil
  #method?
    when message matches
      when argument is a string
        is expected to be method "bar"
      when argument is a symbol
        is expected to be method :bar
    when message does not match
      when argument is a symbol
        is expected not to be method :foo
      when argument is a string
        is expected not to be method "foo"
  #self_receiver?
    with a singleton method definition
      is expected not to be self receiver
    with an instance method definition
      is expected not to be self receiver
    with a class method definition
      is expected to be self receiver
  #camel_case_method?
    with a camel case method
      is expected to be camel case method
    with a regular method
      is expected not to be camel case method
  #body
    with a multi-expression body
      is expected to be begin type
    with no body
      is expected to be nil
    with a single expression body
      is expected to be send type
  #predicate_method?
    with a bang method
      is expected not to be predicate method
    with a predicate method
      is expected to be predicate method
    with a regular method
      is expected not to be predicate method
  #arguments
    with a single rest argument
      is expected to eq 1
    with no arguments
      is expected to be empty
    with multiple mixed arguments
      is expected to eq 2
    with argument forwarding
      is expected to eq 1
    with multiple regular arguments
      is expected to eq 2
    with a single regular argument
      is expected to eq 1
  #const_receiver?
    with an instance method definition
      is expected not to be const receiver
    with a singleton method definition
      is expected to be const receiver
    with a class method definition
      is expected not to be const receiver
  #void_context?
    with a comparison method
      is expected not to be void context
    with a regular assignment method
      is expected to be void context
    with an initializer method
      is expected to be void context
    with a regular method
      is expected not to be void context
    with a bracket assignment method
      is expected to be void context
  #first_argument
    with no arguments
      is expected to be nil
    with a single keyword argument
      is expected to be kwoptarg type
    with a single rest argument
      is expected to be restarg type
    with multiple regular arguments
      is expected to be arg type
    with a single regular argument
      is expected to be arg type
    with multiple mixed arguments
      is expected to be arg type
  #method_name
    with a plain method
      is expected to eq :foo
    with a setter method
      is expected to eq :foo=
    with a unary method
      is expected to eq :-@
    with an operator method
      is expected to eq :==
  #rest_argument?
    with no arguments
      is expected not to be rest argument
    with regular arguments
      is expected not to be rest argument
    with a rest argument
      is expected to be rest argument
    with mixed arguments
      is expected to be rest argument
  when using Ruby 2.7 or newer
    #argument_forwarding?
      is expected to be argument forwarding
  .new
    with a def node
      is expected to be a kind of RuboCop::AST::DefNode
    with a defs node
      is expected to be a kind of RuboCop::AST::DefNode
  #bang_method?
    with a bang method
      is expected to be bang method
    with a regular method
      is expected not to be bang method
    with a predicate method
      is expected not to be bang method
  #endless?
    with endless method definition
      is expected to be endless
    with standard method definition
      is expected not to be endless
  #arguments?
    with a single rest argument
      is expected to be arguments
    with no arguments
      is expected not to be arguments
    with multiple mixed arguments
      is expected to be arguments
    with a single keyword argument
      is expected to be arguments
    with multiple regular arguments
      is expected to be arguments
    with a single regular argument
      is expected to be arguments

RuboCop::AST::KeywordSplatNode
  #colon?
    is expected not to be colon
  #hash_rocket?
    is expected not to be hash rocket
  #value
    is expected to eq s(:kwsplat,
  s(:send, nil, :foo))
  #key_delta
    with alignment set to :left
      when using colon delimiters
        when keyword splat is on the same line
          is expected to eq 0
        when keyword splat is ahead
          is expected to eq 2
        when keyword splat is behind
          is expected to eq -2
        when keyword splat is aligned
          is expected to eq 0
      when using hash rocket delimiters
        when keyword splat is on the same line
          is expected to eq 0
        when keyword splat is aligned
          is expected to eq 0
        when keyword splat is behind
          is expected to eq -2
        when keyword splat is ahead
          is expected to eq 2
    with alignment set to :right
      when using colon delimiters
        when keyword splat is ahead
          is expected to eq 0
        when keyword splat is on the same line
          is expected to eq 0
        when keyword splat is behind
          is expected to eq 0
        when keyword splat is aligned
          is expected to eq 0
      when using hash rocket delimiters
        when keyword splat is on the same line
          is expected to eq 0
        when keyword splat is ahead
          is expected to eq 0
        when keyword splat is behind
          is expected to eq 0
        when keyword splat is aligned
          is expected to eq 0
  #value_delta
    when using hash rocket delimiters
      when keyword splat is left aligned
        is expected to eq 0
      when keyword splat is on the same line
        is expected to eq 0
      when keyword splat is behind
        is expected to eq 0
      when keyword splat is ahead
        is expected to eq 0
    when using colon delimiters
      when keyword splat is ahead
        is expected to eq 0
      when keyword splat is left aligned
        is expected to eq 0
      when keyword splat is on the same line
        is expected to eq 0
      when keyword splat is behind
        is expected to eq 0
  .new
    is expected to be a kind of RuboCop::AST::KeywordSplatNode
  #key
    is expected to eq s(:kwsplat,
  s(:send, nil, :foo))
  #operator
    is expected to eq "**"
  #same_line?
    when a multiline pair shares the same line
      is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
      is expected to be same line s(:pair,
  s(:sym, :a),
  s(:begin))
    when both pairs are on the same line
      is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
    when pairs are on separate lines
      is expected not to be same line s(:kwsplat,
  s(:send, nil, :foo))

RuboCop::AST::AsgnNode
  .new
    with a `cvasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
    with a `lvasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
    with a `ivasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
    with a `gvasgn` node
      is expected to be a kind of RuboCop::AST::AsgnNode
  #name
    with a `gvasgn` node
      is expected to eq :$var
    with a `ivasgn` node
      is expected to eq :@var
    with a `lvasgn` node
      is expected to eq :var
    with a `cvasgn` node
      is expected to eq :@@var
  #expression
    with a `gvasgn` node
      is expected to eq s(:send, nil, :value)
    with a `cvasgn` node
      is expected to eq s(:send, nil, :value)
    with a `ivasgn` node
      is expected to eq s(:send, nil, :value)
    with a `lvasgn` node
      is expected to eq s(:send, nil, :value)

RuboCop::AST::ArrayNode
  #percent_literal?
    with a symbol percent literal
      is expected to be percent literal :symbol
      is expected not to be percent literal :string
      is expected to be percent literal
    with square brackets
      is expected not to be percent literal
      is expected not to be percent literal :string
      is expected not to be percent literal :symbol
    with a string percent literal
      is expected to be percent literal :string
      is expected to be percent literal
      is expected not to be percent literal :symbol
  #square_brackets?
    with square brackets
      is expected to be square brackets
    with a percent literal
      is expected not to be square brackets
  .new
    is expected to be a kind of RuboCop::AST::ArrayNode
  #bracketed?
    with a percent literal
      is expected to be bracketed
    with square brackets
      is expected to be bracketed
    unbracketed
      is expected to be nil
  #each_value
    without block
      is expected to be a kind of Enumerator
    with block
      is expected to eq ["(int 1)", "(int 2)", "(int 3)"]
      is expected to be a kind of RuboCop::AST::ArrayNode
  #values
    with an array of variables
      is expected to eq 2
      is expected to all be send type
    with an empty array
      is expected to be empty
    with an array of literals
      is expected to all be literal
      is expected to eq 3

RuboCop::AST::AndNode
  #operator
    with a logical and node
      is expected to eq "&&"
    with a semantic and node
      is expected to eq "and"
  #semantic_operator?
    with a semantic and node
      is expected to be semantic operator
    with a logical and node
      is expected not to be semantic operator
  #logical_operator?
    with a semantic and node
      is expected not to be logical operator
    with a logical and node
      is expected to be logical operator
  #alternate_operator
    with a logical and node
      is expected to eq "and"
    with a semantic and node
      is expected to eq "&&"
  #lhs
    with a semantic and node
      is expected to be sym type
    with a logical and node
      is expected to be sym type
  #rhs
    with a semantic and node
      is expected to be int type
    with a logical and node
      is expected to be int type
  #inverse_operator
    with a semantic and node
      is expected to eq "or"
    with a logical and node
      is expected to eq "||"
  .new
    with a logical and node
      is expected to be a kind of RuboCop::AST::AndNode
    with a semantic and node
      is expected to be a kind of RuboCop::AST::AndNode

RuboCop::AST::LambdaNode
  #receiver
    is expected to be nil
  #method_name
    is expected to eq :lambda
  #arguments
    is expected to eq 2

RuboCop::AST::RescueNode
  #branches
    when there is an else
      returns all the bodies
      with an empty else
        returns all the bodies
    when there is no else keyword
      returns only then rescue bodies
  #else?
    with an else statement
      is expected to be else
    without an else statement
      is expected not to be else
  .new
    is expected to be a kind of RuboCop::AST::RescueNode
  #resbody_branches
    is expected to all be resbody type
    is expected to eq 2
  #else_branch
    without an else statement
      is expected to be nil
    with an else statement
      is expected to be send type
  #body
    is expected to be send type

RuboCop::AST::NodePattern::Lexer
  provides tokens via next_token
  when given arithmetic symbols
    is parsed as `:&`
  when given a regexp /test/
    round trips
  when given node types and constants
    distinguishes them
  when given a regexp /back\\slash/
    round trips
  when given a regexp /[abc]+\/()?/x
    round trips
  when given a regexp ending with a backslash
    does not lexes it properly
  with $type+
    is parsed as `$ int + x`

RuboCop::AST::SelfClassNode
  #body
    with an empty body
      is expected to be nil
    with a multi-expression body
      is expected to be begin type
    with a single expression body
      is expected to be send type
  #identifier
    is expected to be self type
  .new
    is expected to be a kind of RuboCop::AST::SelfClassNode

RuboCop::AST::ArgsNode
  #argument_list
    is expected to eq [s(:arg, :a), s(:optarg, :b,
  s(:int, 42)), s(:arg, :c), s(:restarg, :d), s(:kwarg, :e), s(:kwoptarg, :f,
  s(:int, 42)), s(:kwrestarg, :g), s(:blockarg, :h), s(:shadowarg, :i)]
    when using Ruby 2.7 or newer
      with argument forwarding
        is expected to eq [s(:forward_arg)]
  .new
    with a method definition
      is expected to be a kind of RuboCop::AST::ArgsNode
    with a block
      is expected to be a kind of RuboCop::AST::ArgsNode
    with a lambda literal
      is expected to be a kind of RuboCop::AST::ArgsNode
  #empty_and_without_delimiters?
    with arguments
      with a lambda literal
        is expected to equal false
      with a method definition
        is expected to equal false
    with empty arguments
      with a block
        is expected to equal true
      with a lambda literal
        is expected to equal true
      with a method definition
        is expected to equal true
    with delimiters
      with a lambda literal
        is expected to equal false
      with a method definition
        is expected to equal false
      with a block
        is expected to equal false

RuboCop::AST::SuperNode
  #bang_method?
    is expected not to be bang method
  #block_argument?
    with a block argument
      is expected to be block argument
    with regular arguments
      is expected not to be block argument
    with no arguments
      is expected not to be block argument
    with mixed arguments
      is expected to be block argument
  #last_argument
    with a single literal argument
      is expected to be sym type
    with no arguments
      is expected to be nil
    with multiple mixed arguments
      is expected to be splat type
    with multiple literal arguments
      is expected to be sym type
    with a single splat argument
      is expected to be splat type
  #camel_case_method?
    is expected not to be camel case method
  #comparison_method?
    is expected not to be comparison method
  .new
    with a super node
      is expected to be a kind of RuboCop::AST::SuperNode
    with a zsuper node
      is expected to be a kind of RuboCop::AST::SuperNode
  #method?
    when message matches
      when argument is a string
        is expected to be method "super"
      when argument is a symbol
        is expected to be method :super
    when message does not match
      when argument is a string
        is expected not to be method "foo"
      when argument is a symbol
        is expected not to be method :foo
  #arguments?
    with no arguments
      is expected not to be arguments
    with a single splat argument
      is expected to be arguments
    with multiple literal arguments
      is expected to be arguments
    with multiple mixed arguments
      is expected to be arguments
    with a single literal argument
      is expected to be arguments
  #macro?
    is expected not to be macro
  #receiver
    is expected to be nil
  #arguments
    with multiple mixed arguments
      is expected to eq 2
    with a single literal argument
      is expected to eq 1
    with no arguments
      is expected to be empty
    with a single splat argument
      is expected to eq 1
    with multiple literal arguments
      is expected to eq 2
  #block_literal?
    with a block literal
      is expected to be block literal
    with no block
      is expected not to be block literal
    with a block argument
      is expected not to be block literal
  #dot?
    is expected not to be dot
  #block_node
    with a block literal
      is expected to be block type
    with no block
      is expected to be nil
    with a block argument
      is expected to be nil
  #operator_method?
    is expected not to be operator method
  #setter_method?
    is expected not to be setter method
  #first_argument
    with no arguments
      is expected to be nil
    with a single literal argument
      is expected to be sym type
    with multiple mixed arguments
      is expected to be sym type
    with a single splat argument
      is expected to be splat type
    with multiple literal arguments
      is expected to be sym type
  #assignment_method?
    is expected not to be assignment method
  #implicit_call?
    is expected not to be implicit call
  #const_receiver?
    is expected not to be const receiver
  #command?
    when argument is a string
      is expected to be command "super"
    when argument is a symbol
      is expected to be command :super
  #method_name
    is expected to eq :super
  #self_receiver?
    is expected not to be self receiver
  #predicate_method?
    is expected not to be predicate method
  #parenthesized?
    with no arguments
      when using parentheses
        is expected to be parenthesized
      when not using parentheses
        is expected not to be parenthesized
    with arguments
      when not using parentheses
        is expected not to be parenthesized
      when using parentheses
        is expected to be parenthesized
  #splat_argument?
    with mixed arguments
      is expected to be splat argument
    with regular arguments
      is expected not to be splat argument
    with no arguments
      is expected not to be splat argument
    with a splat argument
      is expected to be splat argument
  #double_colon?
    is expected not to be double colon

RuboCop::AST::RangeNode
  .new
    with a beignless range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode
    with an exclusive range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode
    with an inclusive range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode
    with an infinite range
      is expected to be range type
      is expected to be a kind of RuboCop::AST::RangeNode

RuboCop::AST::DefinedNode
  #arguments
    is expected to eq 1
    is expected to all be sym type
  #method_name
    is expected to eq :defined?
  .new
    with a defined? node
      is expected to be a kind of RuboCop::AST::DefinedNode
  #receiver
    is expected to be nil

RuboCop::AST::HashNode
  #empty?
    with a hash containing pairs
      is expected not to be empty
    with a hash containing a keyword splat
      is expected not to be empty
    with an empty hash
      is expected to be empty
  #keys
    with an empty hash
      is expected to be empty
    with a hash with symbol keys
      is expected to eq 3
      is expected to all be sym type
    with a hash with string keys
      is expected to eq 2
      is expected to all be str type
  .new
    is expected to be a kind of RuboCop::AST::HashNode
  #each_key
    when not passed a block
      is expected to be a kind of Enumerator
    when passed a block
      yields all the pairs
  #values
    with an empty hash
      is expected to be empty
    with a hash with literal values
      is expected to all be literal
      is expected to eq 3
    with a hash with string keys
      is expected to all be send type
      is expected to eq 2
  #each_value
    when not passed a block
      is expected to be a kind of Enumerator
    when passed a block
      yields all the pairs
  #braces?
    as an argument with braces
      is expected to be braces
    as an argument with no braces
      is expected not to be braces
    with braces
      is expected to be braces
  #mixed_delimiters?
    when pairs are using different delimiters
      is expected to be mixed delimiters
    when all pairs are using a colon delimiter
      is expected not to be mixed delimiters
    when all pairs are using a hash rocket delimiter
      is expected not to be mixed delimiters
  #each_pair
    when passed a block
      yields all the pairs
    when not passed a block
      is expected to be a kind of Enumerator
  #pairs_on_same_line?
    with no pairs on the same line
      is expected not to be pairs on same line
    with all pairs on the same line
      is expected to be pairs on same line
    with some pairs on the same line
      is expected to be pairs on same line
  #pairs
    with a hash of literals
      is expected to all be pair type
      is expected to eq 3
    with an empty hash
      is expected to be empty
    with a hash of variables
      is expected to all be pair type
      is expected to eq 2

RuboCop::AST::ForwardArgsNode
  when using Ruby 2.7 or newer
    #to_a
      is expected to contain exactly (be forward arg type)

RuboCop::AST::Token
  type predicates
    #equals_sign?
      returns false for non equals sign tokens
      returns true for equals sign tokens
    #left_ref_bracket?
      returns true for left_ref_bracket tokens
      returns false for non left_ref_bracket tokens
    #left_bracket?
      returns false for non left_bracket tokens
      returns true for all left_bracket tokens
    #new_line?
      returns false for non new line tokens
      returns true for new line tokens
    #left_array_bracket?
      returns false for non left_array_bracket tokens
      returns true for left_array_bracket tokens
    #left_brace?
      returns true for right_bracket tokens
      returns false for non right_bracket tokens
    #dot?
      returns true for dot tokens
      returns false for non dot tokens
    #end?
      returns true for end tokens
      returns false for non end tokens
    #semicolon?
      returns false for non semicolon tokens
      returns true for semicolon tokens
    #right_bracket?
      returns false for non right_bracket tokens
      returns true for all right_bracket tokens
    #rescue_modifier?
      returns true for rescue modifier tokens
      returns false for non rescue modifier tokens
    #comma?
      returns false for non comma tokens
      returns true for comma tokens
    with braces & parens
      #right_parens?
        returns true for right parens tokens
        returns false for non right parens tokens
      #right_curly_brace?
        returns true for all right brace tokens
        returns false for non right brace tokens
      #left_brace?
        returns true for left hash brace tokens
        returns false for non left hash brace tokens
      #left_curly_brace?
        returns false for non left block brace tokens
        returns true for left block brace tokens
      #left_parens?
        returns true for left parens tokens
        returns false for non left parens tokens
    #regexp_dots?
      returns true for regexp tokens
      returns false for non comma tokens
    #comment?
      returns false for non comment tokens
      returns true for comment tokens
  #line
    returns line of token
  #end_pos
    returns index of last char in token range of entire source
  .from_parser_token
    sets parser token's text to rubocop token's text
    returns a #to_s useful for debugging
    sets parser token's type to rubocop token's type
    sets parser token's range to rubocop token's pos
  #begin_pos
    returns index of first char in token range of entire source
  #space_before
    returns nil when it is on the first line
    returns truthy MatchData when there is a space before token
    returns nil when there is not a space before token
  #to_s
    returns string of token data
  #column
    returns index of first char in token range on that line
  #space_after
    returns truthy MatchData when there is a space after token
    returns nil when there is not a space after token

RuboCop::AST::CasgnNode
  .new
    with a `casgn` node
      is expected to be a kind of RuboCop::AST::CasgnNode
  #namespace
    when the parent is a `const`
      is expected to eq s(:const, nil, :FOO)
    when the parent is a `cbase`
      is expected to eq s(:cbase)
    when there is no parent
      is expected to be nil
  #expression
    is expected to eq s(:send, nil, :value)
  #name
    is expected to eq :VAR

RuboCop::AST::NodePattern::Sets
  is expected to eq "::RuboCop::AST::NodePattern::Sets::SET_1_2_3_ETC"
  creates a constant with the right value
  is expected not to eq "::RuboCop::AST::NodePattern::Sets::SET_1_2_3_ETC_2"
  is expected to eq "::RuboCop::AST::NodePattern::Sets::SET_1_2_3_ETC"

RuboCop::AST::ReturnNode
  behaves like wrapped arguments node
    .new
      with arguments
        is expected to be a kind of RuboCop::AST::ReturnNode
      without arguments
        is expected to be a kind of RuboCop::AST::ReturnNode
    #arguments
      with a single argument and braces
        is expected to eq 1
      with a single splat argument
        is expected to eq 1
      with no arguments and braces
        is expected to be empty
      with no arguments
        is expected to be empty
      with multiple literal arguments
        is expected to eq 2
      with a single argument
        is expected to eq 1

RuboCop::AST::Procarg0Node
  .new
    with a block
      is expected to be a kind of RuboCop::AST::ArgNode
  #name
    is expected to eq :x

RuboCop::AST::ConstNode
  #relative?
    with a non-namespaced constant
      is expected to be relative
  #absolute?
    is expected to be absolute
    with a non-namespaced constant
      is expected not to be absolute
    with a constant not starting with ::
      is expected not to be absolute
  #namespace
    is expected to eq "::Foo::Bar"
  #short_name
    is expected to eq :BAZ
  #module_name?
    is expected not to be module name
    with a constant with a lowercase letter
      is expected to be module name
  #each_path
    yields all parts of the namespace

RuboCop::AST::UntilNode
  #do?
    without a do keyword
      is expected not to be do
    with a do keyword
      is expected to be do
  #keyword
    is expected to eq "until"
  #inverse_keyword
    is expected to eq "while"
  .new
    with a modifier until
      is expected to be a kind of RuboCop::AST::UntilNode
    with a statement until
      is expected to be a kind of RuboCop::AST::UntilNode
  #loop_keyword?
    with a modifier until
      is expected to be loop keyword
    with a statement until
      is expected to be loop keyword
  #post_condition_loop?
    with a modifier until
      is expected to be post condition loop
    with a statement until
      is expected not to be post condition loop

RuboCop::AST::BreakNode
  behaves like wrapped arguments node
    .new
      without arguments
        is expected to be a kind of RuboCop::AST::BreakNode
      with arguments
        is expected to be a kind of RuboCop::AST::BreakNode
    #arguments
      with a single argument and braces
        is expected to eq 1
      with no arguments
        is expected to be empty
      with a single splat argument
        is expected to eq 1
      with no arguments and braces
        is expected to be empty
      with a single argument
        is expected to eq 1
      with multiple literal arguments
        is expected to eq 2

RuboCop::AST::OrNode
  #operator
    with a logical or node
      is expected to eq "||"
    with a semantic or node
      is expected to eq "or"
  #rhs
    with a logical or node
      is expected to be int type
    with a semantic or node
      is expected to be int type
  #logical_operator?
    with a semantic or node
      is expected not to be logical operator
    with a logical or node
      is expected to be logical operator
  #alternate_operator
    with a semantic or node
      is expected to eq "||"
    with a logical or node
      is expected to eq "or"
  #semantic_operator?
    with a logical or node
      is expected not to be semantic operator
    with a semantic or node
      is expected to be semantic operator
  .new
    with a logical or node
      is expected to be a kind of RuboCop::AST::OrNode
    with a semantic or node
      is expected to be a kind of RuboCop::AST::OrNode
  #lhs
    with a logical or node
      is expected to be sym type
    with a semantic or node
      is expected to be sym type
  #inverse_operator
    with a semantic or node
      is expected to eq "and"
    with a logical or node
      is expected to eq "&&"

RuboCop::AST::PairNode
  #hash_rocket?
    when using a hash rocket delimiter
      is expected to be hash rocket
    when using a colon delimiter
      is expected not to be hash rocket
  #value
    is expected to be int type
  #colon?
    when using a hash rocket delimiter
      is expected not to be colon
    when using a colon delimiter
      is expected to be colon
  #key
    when using a symbol key
      is expected to be sym type
    when using a string key
      is expected to be str type
  #same_line?
    when a multiline pair shares the same line
      when last pair is a keyword splat
        is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
        is expected to be same line s(:pair,
  s(:sym, :a),
  s(:begin))
      when both pairs are explicit pairs
        is expected to be same line s(:pair,
  s(:sym, :a),
  s(:begin))
        is expected to be same line s(:pair,
  s(:sym, :b),
  s(:int, 2))
    when pairs are on separate lines
      when last pair is a keyword splat
        is expected not to be same line s(:kwsplat,
  s(:send, nil, :foo))
      when both pairs are explicit pairs
        is expected not to be same line s(:pair,
  s(:sym, :b),
  s(:int, 2))
    when both pairs are on the same line
      when both pair is a keyword splat
        is expected to be same line s(:kwsplat,
  s(:send, nil, :foo))
      when both pairs are explicit pairs
        is expected to be same line s(:pair,
  s(:sym, :b),
  s(:int, 2))
  #value_delta
    when using hash rocket delimiters
      when values are aligned
        when both pairs are explicit pairs
          is expected to eq 0
        when second pair is a keyword splat
          is expected to eq 0
      when receiver value is behind
        is expected to eq -2
      when receiver value is ahead
        is expected to eq 2
      when both pairs are on the same line
        is expected to eq 0
    when using colon delimiters
      when values are aligned
        when both pairs are explicit pairs
          is expected to eq 0
        when second pair is a keyword splat
          is expected to eq 0
      when receiver value is ahead
        is expected to eq 2
      when receiver value is behind
        is expected to eq -2
      when both pairs are on the same line
        is expected to eq 0
  #key_delta
    with alignment set to :left
      when using colon delimiters
        when receiver key is behind
          when second pair is a keyword splat
            is expected to eq -2
          when both pairs are reail pairs
            is expected to eq -2
        when keys are aligned
          when both pairs are explicit pairs
            is expected to eq 0
          when second pair is a keyword splat
            is expected to eq 0
        when both keys are on the same line
          when both pairs are explicit pairs
            is expected to eq 0
          when second pair is a keyword splat
            is expected to eq 0
        when receiver key is ahead
          when both pairs are explicit pairs
            is expected to eq 2
          when second pair is a keyword splat
            is expected to eq 2
      when using hash rocket delimiters
        when keys are aligned
          when both keys are explicit keys
            is expected to eq 0
          when second key is a keyword splat
            is expected to eq 0
        when receiver key is behind
          when second pair is a keyword splat
            is expected to eq -2
          when both pairs are explicit pairs
            is expected to eq -2
        when receiver key is ahead
          when second pair is a keyword splat
            is expected to eq 2
          when both pairs are explicit pairs
            is expected to eq 2
        when both keys are on the same line
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
    with alignment set to :right
      when using hash rocket delimiters
        when receiver key is behind
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq -2
        when both keys are on the same line
          when both pairs are explicit pairs
            is expected to eq 0
          when second pair is a keyword splat
            is expected to eq 0
        when keys are aligned
          when second key is a keyword splat
            is expected to eq 0
          when both keys are explicit keys
            is expected to eq 0
        when receiver key is ahead
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 2
      when using colon delimiters
        when receiver key is ahead
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 2
        when both keys are on the same line
          when both pairs are explicit pairs
            is expected to eq 0
          when second pair is a keyword splat
            is expected to eq 0
        when receiver key is behind
          when both pairs are reail pairs
            is expected to eq -2
          when second pair is a keyword splat
            is expected to eq 0
        when keys are aligned
          when second pair is a keyword splat
            is expected to eq 0
          when both pairs are explicit pairs
            is expected to eq 0
  #value_omission?
    when using hash value omission
      is expected to be value omission
    when not using hash value omission
      is expected not to be value omission
  .new
    is expected to be a kind of RuboCop::AST::PairNode
  #delimiter
    when using a colon delimiter
      is expected to eq ": "
      is expected to eq ":"
    when using a hash rocket delimiter
      is expected to eq " => "
      is expected to eq "=>"
  #value_on_new_line?
    when value spans multiple lines
      is expected not to be value on new line
    when value starts on a new line
      is expected to be value on new line
    when pair is on a single line
      is expected not to be value on new line
  #inverse_delimiter
    when using a hash rocket delimiter
      is expected to eq ":"
      is expected to eq ": "
    when using a colon delimiter
      is expected to eq " => "
      is expected to eq "=>"

RuboCop::AST::ClassNode
  .new
    is expected to be a kind of RuboCop::AST::ClassNode
  #parent_class
    when a parent class is specified
      is expected to be const type
    when no parent class is specified
      is expected to be nil
  #body
    with an empty body
      is expected to be nil
    with a multi-expression body
      is expected to be begin type
    with a single expression body
      is expected to be send type
  #identifier
    is expected to be const type

RuboCop::AST::SymbolNode
  .new
    with a symbol node
      is expected to be a kind of RuboCop::AST::SymbolNode
  #value
    is expected to eq :foo

RuboCop::AST::ResbodyNode
  #exception_variable
    for an explicit rescue
      is expected to eq "ex"
    when an exception variable is not given
      is expected to be nil
    for an implicit rescue
      is expected to eq "ex"
  #branch_index
    is expected to eq 0
    is expected to eq 2
    is expected to eq 1
  #exceptions
    with multiple exceptions
      is expected to all be const type
      is expected to eq 2
    without exception
      is expected to eq 0
    with a single exception
      is expected to all be const type
      is expected to eq 1
  .new
    is expected to be a kind of RuboCop::AST::ResbodyNode
  #body
    is expected to be sym type

RuboCop::AST::InPatternNode
  when using Ruby 2.7 or newer
    #then?
      with a then keyword
        is expected to be then
      without a then keyword
        is expected not to be then
    #pattern
      with a value pattern
        is expected to be int type
      with an alternative pattern
        is expected to be match alt type
      with a variable pattern
        is expected to be match var type
      with a hash pattern
        is expected to be hash pattern type
      with a pin operator
        is expected to be pin type
      with an as pattern
        is expected to be match as type
      with an array pattern
        is expected to be array pattern type
    #body
      with a then keyword
        is expected to be sym type
      without a then keyword
        is expected to be array type
    .new
      is expected to be a kind of RuboCop::AST::InPatternNode
    #branch_index
      is expected to eq 1
      is expected to eq 0
      is expected to eq 2

RuboCop::AST::ModuleNode
  .new
    is expected to be a kind of RuboCop::AST::ModuleNode
  #body
    with a single expression body
      is expected to be send type
    with a multi-expression body
      is expected to be begin type
    with an empty body
      is expected to be nil
  #identifier
    is expected to be const type

RuboCop::AST::IfNode
  #branches
    with an elsif statement
      is expected to eq 3
      is expected to all be literal
    with an if statement
      is expected to eq 1
      is expected to all be literal
    with an else statement
      is expected to all be literal
      is expected to eq 2
    with an unless statement
      is expected to eq 1
      is expected to all be literal
    with a ternary operator
      is expected to eq 2
      is expected to all be literal
  #nested_conditional?
    with nested conditionals in else clause
      is expected to be nested conditional
    with nested conditionals in if clause
      is expected to be nested conditional
    with nested conditionals in elsif clause
      is expected to be nested conditional
    with nested ternary operators
      when nested in the truthy branch
        is expected to be nested conditional
      when nested in the falsey branch
        is expected to be nested conditional
    with no nested conditionals
      is expected not to be nested conditional
  #elsif_conditional?
    with nested ternary operators
      when nested in the falsey branch
        is expected not to be elsif conditional
      when nested in the truthy branch
        is expected not to be elsif conditional
    with multiple elsif conditionals
      is expected to be elsif conditional
    with nested conditionals in else clause
      is expected not to be elsif conditional
    with one elsif conditional
      is expected to be elsif conditional
    with nested conditionals in if clause
      is expected not to be elsif conditional
  #inverse_keyword?
    with an unless statement
      is expected to eq "if"
    with an if statement
      is expected to eq "unless"
    with a ternary operator
      is expected to eq ""
  .new
    with a ternary operator
      is expected to be a kind of RuboCop::AST::IfNode
    with a modifier statement
      is expected to be a kind of RuboCop::AST::IfNode
    with a regular if statement
      is expected to be a kind of RuboCop::AST::IfNode
  #elsif?
    with an if statement comtaining an elsif
      is expected not to be elsif
    without an elsif statement
      is expected not to be elsif
    with an elsif statement
      is expected to be elsif
  #if?
    with a ternary operator
      is expected not to be if
    with an if statement
      is expected to be if
    with an unless statement
      is expected not to be if
  #else?
    with an elsif statement
      is expected to be else
    without an else statement
      is expected not to be elsif
  #each_branch
    when passed a block
      yields all the branches
    when not passed a block
      is expected to be a kind of Enumerator
  #if_branch
    with an if statement
      is expected to be sym type
    with a ternary operator
      is expected to be sym type
    with an unless statement
      is expected to be sym type
  #else_branch
    with a ternary operator
      is expected to be int type
    with an unless statement
      is expected to be int type
    with an if statement
      is expected to be int type
  #keyword
    with an unless statement
      is expected to eq "unless"
    with a ternary operator
      is expected to eq ""
    with an if statement
      is expected to eq "if"
  #ternary?
    with a ternary operator
      is expected to be ternary
    with an unless statement
      is expected not to be ternary
    with an if statement
      is expected not to be ternary
  #unless?
    with an if statement
      is expected not to be unless
    with a ternary operator
      is expected not to be unless
    with an unless statement
      is expected to be unless
  #modifier_form?
    with a modifier if statement
      is expected to be modifier form
    with a non-modifier unless statement
      is expected not to be modifier form
    with a modifier unless statement
      is expected to be modifier form
    with a non-modifier if statement
      is expected not to be modifier form
    with a ternary operator
      is expected not to be modifier form

Changelog
  parses correctly
  merges correctly
  Changelog::Entry
    generates correct content

RuboCop::AST::ForNode
  #body
    is expected to be sym type
  #post_condition_loop?
    is expected not to be post condition loop
  #void_context?
    with a do keyword
      is expected to be void context
    without a do keyword
      is expected to be void context
  #collection
    is expected to be sym type
  #keyword
    is expected to eq "for"
  .new
    is expected to be a kind of RuboCop::AST::ForNode
  #loop_keyword?
    is expected to be loop keyword
  #do?
    without a do keyword
      is expected not to be do
    with a do keyword
      is expected to be do
  #variable
    is expected to be lvasgn type

RuboCop::AST::OrAsgnNode
  .new
    is expected to be a kind of RuboCop::AST::OrAsgnNode
  #operator
    is expected to eq :"||"
  #expression
    is expected to eq s(:send, nil, :value)
  #name
    is expected to eq :var
  #assignment_node
    is expected to be a kind of RuboCop::AST::AsgnNode

RuboCop::AST::ProcessedSource
  #[]
    when a range is passed
      returns the array of lines
    when an index is passed
      returns the line
    when start index and length are passed
      returns the array of lines
  #start_with?
    with present source
      returns true when passed string that starts source
      returns false when passed string that does not start source
    with blank source
      returns false
  .from_file
    raises a Errno::ENOENT when the file does not exist
    when the file exists
      returns an instance of ProcessedSource
      sets the file path to the instance's #path
  #last_token_of
    returns last token for node
    accepts Node as an argument
  #comments
    is an array of comments
    when the source is invalid
      returns []
  #following_line
    returns source of line after token
  token enumerables
    #find_token
      yields correct token
      yields nil when there is no match
    #each_token
      yields all tokens
  #tokens
    has an array of tokens
  #buffer
    is a source buffer
  #tokens_within
    accepts Node as an argument
    returns tokens for node
    when heredoc as argument is present
      returns tokens for node before heredoc
      returns tokens for node after heredoc
      returns tokens for heredoc node
  #preceding_line
    returns source of line before token
  #blank?
    with source of no content
      returns true
    with source with content
      returns false
  #ast
    is the root node of AST
  #parser_error
    when the source lacks encoding comment and is really utf-8 encoded but has been read as US-ASCII
      is nil
    when the source could not be parsed due to encoding error
      returns the error
    when the source was properly parsed
      is nil
  #lines
    is an array
    contains lines as string without linefeed
    has same number of elements as line count
  #first_token_of
    accepts Node as an argument
    returns first token for node
  #path
    is the path passed to .new
  valid_syntax?
    when the source is valid but has some warning diagnostics
      returns true
    when the source is invalid
      returns false
    when a line starts with an integer literal
      tokenizes the source correctly
    when the source itself is valid encoding but includes strange encoding literals that are accepted by MRI
      returns true
    when the source is completely valid
      returns true
    when the source could not be parsed due to encoding error
      returns false
  #file_path
    returns file path
  with heavily commented source
    #find_comment
      yields nil when there is no match
      yields correct comment
    #line_with_comment?
      returns true for lines with comments
      returns false for lines without comments
    #comment_at_line
      returns the comment at the given line number
      returns nil if line has no comment
    #each_comment_in_lines
      yields the comments
    #contains_comment?
      provided source_range on line without comment
        is expected to equal false
      provided a multiline source_range with at least one line with comment
        is expected to equal true
      provided source_range on comment line
        is expected to equal true
      provided source_range on line with comment
        is expected to equal true
    #each_comment
      yields all comments
    #comments_before_line
      returns comments on or before given line

RuboCop::AST::RuboCopCompatibility
  when ran from a compatible version of Rubocop
    issues a warning
  when ran from an incompatible version of Rubocop
    issues a warning

Finished in 15.9 seconds (files took 9.52 seconds to load)
2392 examples, 0 failures

Randomized with seed 19072


┌──────────────────────────────────────────────────────────────────────────────┐
│ dh_ruby --install finished                                                   │
└──────────────────────────────────────────────────────────────────────────────┘

   dh_installdocs -O--buildsystem=ruby
   dh_ruby_fixdocs -O--buildsystem=ruby
   debian/rules override_dh_installchangelogs
make[1]: Entering directory '/build/reproducible-path/ruby-rubocop-ast-1.24.0'
dh_installchangelogs CHANGELOG.md
make[1]: Leaving directory '/build/reproducible-path/ruby-rubocop-ast-1.24.0'
   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-rubocop-ast: substitution variable ${shlibs:Depends} used, but is not defined
dpkg-gencontrol: warning: package ruby-rubocop-ast: substitution variable ${ruby:Versions} used, but is not defined
   dh_md5sums -O--buildsystem=ruby
   dh_builddeb -O--buildsystem=ruby
dpkg-deb: building package 'ruby-rubocop-ast' in '../ruby-rubocop-ast_1.24.0-2_all.deb'.
 dpkg-genbuildinfo --build=binary -O../ruby-rubocop-ast_1.24.0-2_i386.buildinfo
 dpkg-genchanges --build=binary -O../ruby-rubocop-ast_1.24.0-2_i386.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/49287 and its subdirectories
I: Current time: Tue Mar 10 19:18:41 -12 2026
I: pbuilder-time-stamp: 1773213521