diff -pruN 1.110-1.3/CONTRIBUTING 1.112-1/CONTRIBUTING
--- 1.110-1.3/CONTRIBUTING	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/CONTRIBUTING	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,105 @@
+
+CONTRIBUTING
+
+Thank you for considering contributing to this distribution.  This file
+contains instructions that will help you work with the source code.
+
+PLEASE NOTE that if you have any questions or difficulties, you can reach the
+maintainer(s) through the bug queue described later in this document
+(preferred), or by emailing the releaser directly. You are not required to
+follow any of the steps in this document to submit a patch or bug report;
+these are just recommendations, intended to help you (and help us help you
+faster).
+
+The distribution is managed with Dist::Zilla (https://metacpan.org/release/Dist-Zilla).
+This means than many of the usual files you might expect are not in the
+repository, but are generated at release time (e.g. Makefile.PL).
+
+However, you can run tests directly using the 'prove' tool:
+
+  $ prove -l
+  $ prove -lv t/some_test_file.t
+  $ prove -lvr t/
+
+In most cases, 'prove' is entirely sufficient for you to test any patches you
+have.
+
+You may need to satisfy some dependencies.  The easiest way to satisfy
+dependencies is to install the last release -- this is available at
+https://metacpan.org/release/Algorithm-Dependency
+
+If you use cpanminus, you can do it without downloading the tarball first:
+
+  $ cpanm --reinstall --installdeps --with-recommends Algorithm::Dependency
+
+Dist::Zilla is a very powerful authoring tool, but requires a number of
+author-specific plugins.  If you would like to use it for contributing,
+install it from CPAN, then run one of the following commands, depending on
+your CPAN client:
+
+  $ cpan `dzil authordeps --missing`
+or
+  $ dzil authordeps --missing | cpanm
+
+You should then also install any additional requirements not needed by the
+dzil build but may be needed by tests or other development:
+
+  $ cpan `dzil listdeps --author --missing`
+or
+  $ dzil listdeps --author --missing | cpanm
+
+Or, you can use the 'dzil stale' command to install all requirements at once:
+
+  $ cpan Dist::Zilla::App::Command::stale
+  $ cpan `dzil stale --all`
+or
+  $ cpanm Dist::Zilla::App::Command::stale
+  $ dzil stale --all | cpanm
+
+You can also do this via cpanm directly:
+
+  $ cpanm --reinstall --installdeps --with-develop --with-recommends Algorithm::Dependency
+
+Once installed, here are some dzil commands you might try:
+
+  $ dzil build
+  $ dzil test
+  $ dzil test --release
+  $ dzil xtest
+  $ dzil listdeps --json
+  $ dzil build --notgz
+
+You can learn more about Dist::Zilla at http://dzil.org/.
+
+The code for this distribution is hosted at GitHub. The repository is:
+
+https://github.com/karenetheridge/Algorithm-Dependency
+
+You can submit code changes by forking the repository, pushing your code
+changes to your clone, and then submitting a pull request. Please include a
+suitable end-user-oriented entry in the Changes file describing your change.
+Detailed instructions for doing that is available here:
+
+https://help.github.com/articles/creating-a-pull-request
+
+All pull requests for this distribution will be automatically tested on Linux
+by Travis at: https://travis-ci.com/karenetheridge/Algorithm-Dependency
+Results will be visible in the pull request on GitHub. Follow the appropriate
+links for details when tests fail. Changes will not be mergeable until all
+tests pass.
+
+If you have found a bug, but do not have an accompanying patch to fix it, you
+can submit an issue report here:
+https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency
+or via email: bug-Algorithm-Dependency@rt.cpan.org
+This is a good place to send your questions about the usage of this distribution.
+
+If you send me a patch or pull request, your name and email address will be
+included in the documentation as a contributor (using the attribution on the
+commit or patch), unless you specifically request for it not to be.  If you
+wish to be listed under a different name or address, you should submit a pull
+request to the .mailmap file to contain the correct mapping.
+
+
+This file was generated via Dist::Zilla::Plugin::GenerateFile::FromShareDir 0.014
+from a template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.154.
diff -pruN 1.110-1.3/Changes 1.112-1/Changes
--- 1.110-1.3/Changes	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/Changes	2020-04-28 03:15:31.000000000 +0000
@@ -1,92 +1,100 @@
 Revision history for Perl extension Algorithm-Dependency
 
-1.110 Tue 14 Apr 2009
+1.112     2020-04-28 03:15:25Z
+        - restore prerequisite version declarations from version 1.110
+        - update documentation to add clarity for how ordered processing works
+          (PR#1) (thanks, Mark Murawski!)
+
+1.111     2018-12-22 01:42:08Z
+        - distribution tooling updates
+
+1.110     2009-04-14
 	- Upgrading to Module::Install 0.83
 
-1.109 Wed  9 Apr 2009
+1.109     2009-04-09
 	- Upgrading to Module::Install 0.82
 	- Adding new method ->weight_merged
 
-1.108 Wed 10 Feb 2009
+1.108     2009-Feb-10
 	- Allow ->weight to take _STRING instead of only _IDENTIFIER
 
-1.107 Sun  8 Feb 2009
+1.107     2009-Feb-08
 	- Adding Algorithm::Dependency::Source::Invert
 
-1.106 Mon 14 Jan 2008
+1.106     2008-01-14
 	- Adding a slight change to 01_compile.t to prevent warnings
 
-1.105_01 Tue 11 Dec 2007
+1.105_01  2007-12-11
 	- Make test scripts more 5.005-compatible
 	- Removing the use of base.pm for 5.006-compatibility
 
-1.104 Mon 12 Nov 2007
+1.104     2007-11-12
 	- No functional changes
 	- Updating to Module::Install 0.68
 	- Updating bundled tests
 
-1.103 Thu 29 Jun 2007
+1.103     2007-06-29
 	- No functional changes, no need to upgrade
 	- Updating to Module::Install 0.65
 
-1.102 Sat 16 Apr 2006
+1.102     2006-04-16
 	- No functional changes, no need to upgrade
 	- Moving from old CVS to new SVN repository
 	- Doing some general cleaning up
 	- Updating to Module::Install 0.62
 
-1.101 Mon Oct 10 2005
+1.101     2005-10-10
 	- It appears I overtightened the naming rules. Reversed
 
-1.100 Mon Oct 10 2005
+1.100     2005-10-10
 	- Significant version bump to announce addition of major functionality
 	- Added Algorithm::Dependency::Weight
 	- Upgraded a few remaining things to Params::Util
 
-1.04 Wed Sep 14 2005
+1.04      2005-09-14
 	- Converted to Module::Install
 	- Added Algorithm::Dependency::Source::HoA by request
 	- Modernised the layout a little
 	- Upgraded from UNIVERSAL::isa to Params::Util to support more
 	  complex uses of objects like Adapaters and Decorators.
 
-1.03 Sat Aug 21 2004
+1.03      2004-08-21
 	- Because some smoke testers weren't installing Test::ClassAPI's
 	  dependencies properly, add them explicitly to the Makefile.PL
 
-1.02 Fri Aug 20 2004
+1.02      2004-08-20
 	- Change missing_dependencies to use ->item and ->items rather than
 	  accessing the internal directly. This means custom sub-classed
 	  Sources don't have to overload ->missing_dependencies. Currently
 	  in the documentation, we tell them they don't have to.
 
-1.01 Fri Aug 20 2004
+1.01      2004-08-20
 	- Fixed: ignore_orphans did not work for the ::Ordered subclass
 	- Changed to test data directory to the new standard
 
-1.0  Mon Jul 19 2004
+1.0       2004-07-19
 	- Updated copyright notice
 	- Updated test suite, and made it more cross-platform friendly
 	- No changes needed for a long time, so incrementing to version 1.0
 
-0.6  Wed Nov 19 2003
+0.6       2003-11-19
 	- Fixed several bugs in the POD documentation
 	- Updated version numbers correctly this time
 
-0.5  Wed Nov 12 2003
+0.5       2003-11-12
 	- Due to a bug I didn't notice until I had a bad Source, 
 	  the missing_dependencies method just outright didn't work.
 	  Bug fixed and tests added to catch the case in future.
 
-0.4  Sat Jun 21 10:19:21 2003
+0.4       2003-06-21 10:19:21
 	- Added the missing_dependencies method to the Source class
 
-0.3  Sun May 11 8:13:42 2003
+0.3       2003-05-11 08:13:42
 	- Made a stupid mistake in ->schedule_all
 	
-0.2  Sun May 11 6:54:32 2003
+0.2       2003-05-11 06:54:32
 	- Added the ->schedule_all method
 
-0.1  Wed Apr 16 21:01:52 2003
+0.1       2003-04-16 21:01:52
 	- original version
 
diff -pruN 1.110-1.3/INSTALL 1.112-1/INSTALL
--- 1.110-1.3/INSTALL	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/INSTALL	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,72 @@
+This is the Perl distribution Algorithm-Dependency.
+
+Installing Algorithm-Dependency is straightforward.
+
+## Installation with cpanm
+
+If you have cpanm, you only need one line:
+
+    % cpanm Algorithm::Dependency
+
+If it does not have permission to install modules to the current perl, cpanm
+will automatically set up and install to a local::lib in your home directory.
+See the local::lib documentation (https://metacpan.org/pod/local::lib) for
+details on enabling it in your environment.
+
+## Installing with the CPAN shell
+
+Alternatively, if your CPAN shell is set up, you should just be able to do:
+
+    % cpan Algorithm::Dependency
+
+## Manual installation
+
+As a last resort, you can manually install it. Download the tarball, untar it,
+install configure prerequisites (see below), then build it:
+
+    % perl Makefile.PL
+    % make && make test
+
+Then install it:
+
+    % make install
+
+On Windows platforms, you should use `dmake` or `nmake`, instead of `make`.
+
+If your perl is system-managed, you can create a local::lib in your home
+directory to install modules to. For details, see the local::lib documentation:
+https://metacpan.org/pod/local::lib
+
+The prerequisites of this distribution will also have to be installed manually. The
+prerequisites are listed in one of the files: `MYMETA.yml` or `MYMETA.json` generated
+by running the manual build process described above.
+
+## Configure Prerequisites
+
+This distribution requires other modules to be installed before this
+distribution's installer can be run.  They can be found under the
+"configure_requires" key of META.yml or the
+"{prereqs}{configure}{requires}" key of META.json.
+
+## Other Prerequisites
+
+This distribution may require additional modules to be installed after running
+Makefile.PL.
+Look for prerequisites in the following phases:
+
+* to run make, PHASE = build
+* to use the module code itself, PHASE = runtime
+* to run tests, PHASE = test
+
+They can all be found in the "PHASE_requires" key of MYMETA.yml or the
+"{prereqs}{PHASE}{requires}" key of MYMETA.json.
+
+## Documentation
+
+Algorithm-Dependency documentation is available as POD.
+You can run `perldoc` from a shell to read the documentation:
+
+    % perldoc Algorithm::Dependency
+
+For more information on installing Perl modules via CPAN, please see:
+https://www.cpan.org/modules/INSTALL.html
diff -pruN 1.110-1.3/LICENSE 1.112-1/LICENSE
--- 1.110-1.3/LICENSE	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/LICENSE	2020-04-28 03:15:31.000000000 +0000
@@ -1,276 +1,282 @@
+This software is copyright (c) 2003 by Adam Kennedy.
 
-Terms of Perl itself
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+Terms of the Perl programming language system itself
 
 a) the GNU General Public License as published by the Free
    Software Foundation; either version 1, or (at your option) any
    later version, or
 b) the "Artistic License"
 
-----------------------------------------------------------------------------
+--- The GNU General Public License, Version 1, February 1989 ---
 
-The General Public License (GPL)
-Version 2, June 1991
+This software is Copyright (c) 2003 by Adam Kennedy.
 
-Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
-Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
-verbatim copies of this license document, but changing it is not allowed.
+This is free software, licensed under:
 
-Preamble
+  The GNU General Public License, Version 1, February 1989
+
+                    GNU GENERAL PUBLIC LICENSE
+                     Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as "you".
+
+  1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
+  2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+    a) cause the modified files to carry prominent notices stating that
+    you changed the files and the date of any change; and
+
+    b) cause the whole of any work that you distribute or publish, that
+    in whole or in part contains the Program or any part thereof, either
+    with or without modifications, to be licensed at no charge to all
+    third parties under the terms of this General Public License (except
+    that you may choose to grant warranty protection to some or all
+    third parties, at your option).
+
+    c) If the modified program normally reads commands interactively when
+    run, you must cause it, when started running for such interactive use
+    in the simplest and most usual way, to print or display an
+    announcement including an appropriate copyright notice and a notice
+    that there is no warranty (or else, saying that you provide a
+    warranty) and that users may redistribute the program under these
+    conditions, and telling the user how to view a copy of this General
+    Public License.
+
+    d) You may charge a fee for the physical act of transferring a
+    copy, and you may at your option offer warranty protection in
+    exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+  3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+    a) accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    b) accompany it with a written offer, valid for at least three
+    years, to give any third party free (except for a nominal charge
+    for the cost of distribution) a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    c) accompany it with the information you received as to where the
+    corresponding source code may be obtained.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+  4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+  5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+  7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+  8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+        Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 1, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19xx name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  program `Gnomovision' (a program to direct compilers to make passes
+  at assemblers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+That's all there is to it!
 
-The licenses for most software are designed to take away your freedom to share
-and change it. By contrast, the GNU General Public License is intended to
-guarantee your freedom to share and change free software--to make sure the
-software is free for all its users. This General Public License applies to most of
-the Free Software Foundation's software and to any other program whose
-authors commit to using it. (Some other Free Software Foundation software is
-covered by the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not price. Our
-General Public Licenses are designed to make sure that you have the freedom
-to distribute copies of free software (and charge for this service if you wish), that
-you receive source code or can get it if you want it, that you can change the
-software or use pieces of it in new free programs; and that you know you can do
-these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to deny
-you these rights or to ask you to surrender the rights. These restrictions
-translate to certain responsibilities for you if you distribute copies of the
-software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for a
-fee, you must give the recipients all the rights that you have. You must make
-sure that they, too, receive or can get the source code. And you must show
-them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2) offer
-you this license which gives you legal permission to copy, distribute and/or
-modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If the
-software is modified by someone else and passed on, we want its recipients to
-know that what they have is not the original, so that any problems introduced by
-others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We wish
-to avoid the danger that redistributors of a free program will individually obtain
-patent licenses, in effect making the program proprietary. To prevent this, we
-have made it clear that any patent must be licensed for everyone's free use or
-not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification
-follow.
-
-GNU GENERAL PUBLIC LICENSE
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
-MODIFICATION
-
-0. This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the terms of
-this General Public License. The "Program", below, refers to any such program
-or work, and a "work based on the Program" means either the Program or any
-derivative work under copyright law: that is to say, a work containing the
-Program or a portion of it, either verbatim or with modifications and/or translated
-into another language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not covered by
-this License; they are outside its scope. The act of running the Program is not
-restricted, and the output from the Program is covered only if its contents
-constitute a work based on the Program (independent of having been made by
-running the Program). Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source code as
-you receive it, in any medium, provided that you conspicuously and appropriately
-publish on each copy an appropriate copyright notice and disclaimer of warranty;
-keep intact all the notices that refer to this License and to the absence of any
-warranty; and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you may at
-your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it, thus
-forming a work based on the Program, and copy and distribute such
-modifications or work under the terms of Section 1 above, provided that you also
-meet all of these conditions:
-
-a) You must cause the modified files to carry prominent notices stating that you
-changed the files and the date of any change.
-
-b) You must cause any work that you distribute or publish, that in whole or in
-part contains or is derived from the Program or any part thereof, to be licensed
-as a whole at no charge to all third parties under the terms of this License.
-
-c) If the modified program normally reads commands interactively when run, you
-must cause it, when started running for such interactive use in the most ordinary
-way, to print or display an announcement including an appropriate copyright
-notice and a notice that there is no warranty (or else, saying that you provide a
-warranty) and that users may redistribute the program under these conditions,
-and telling the user how to view a copy of this License. (Exception: if the
-Program itself is interactive but does not normally print such an announcement,
-your work based on the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If identifiable
-sections of that work are not derived from the Program, and can be reasonably
-considered independent and separate works in themselves, then this License,
-and its terms, do not apply to those sections when you distribute them as
-separate works. But when you distribute the same sections as part of a whole
-which is a work based on the Program, the distribution of the whole must be on
-the terms of this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your rights to
-work written entirely by you; rather, the intent is to exercise the right to control
-the distribution of derivative or collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program with the
-Program (or with a work based on the Program) on a volume of a storage or
-distribution medium does not bring the other work under the scope of this
-License.
-
-3. You may copy and distribute the Program (or a work based on it, under
-Section 2) in object code or executable form under the terms of Sections 1 and 2
-above provided that you also do one of the following:
-
-a) Accompany it with the complete corresponding machine-readable source
-code, which must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange; or,
-
-b) Accompany it with a written offer, valid for at least three years, to give any
-third party, for a charge no more than your cost of physically performing source
-distribution, a complete machine-readable copy of the corresponding source
-code, to be distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-c) Accompany it with the information you received as to the offer to distribute
-corresponding source code. (This alternative is allowed only for noncommercial
-distribution and only if you received the program in object code or executable
-form with such an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for making
-modifications to it. For an executable work, complete source code means all the
-source code for all modules it contains, plus any associated interface definition
-files, plus the scripts used to control compilation and installation of the
-executable. However, as a special exception, the source code distributed need
-not include anything that is normally distributed (in either source or binary form)
-with the major components (compiler, kernel, and so on) of the operating system
-on which the executable runs, unless that component itself accompanies the
-executable.
-
-If distribution of executable or object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the source
-code from the same place counts as distribution of the source code, even though
-third parties are not compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as
-expressly provided under this License. Any attempt otherwise to copy, modify,
-sublicense or distribute the Program is void, and will automatically terminate
-your rights under this License. However, parties who have received copies, or
-rights, from you under this License will not have their licenses terminated so long
-as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it.
-However, nothing else grants you permission to modify or distribute the Program
-or its derivative works. These actions are prohibited by law if you do not accept
-this License. Therefore, by modifying or distributing the Program (or any work
-based on the Program), you indicate your acceptance of this License to do so,
-and all its terms and conditions for copying, distributing or modifying the
-Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the Program),
-the recipient automatically receives a license from the original licensor to copy,
-distribute or modify the Program subject to these terms and conditions. You
-may not impose any further restrictions on the recipients' exercise of the rights
-granted herein. You are not responsible for enforcing compliance by third parties
-to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent infringement
-or for any other reason (not limited to patent issues), conditions are imposed on
-you (whether by court order, agreement or otherwise) that contradict the
-conditions of this License, they do not excuse you from the conditions of this
-License. If you cannot distribute so as to satisfy simultaneously your obligations
-under this License and any other pertinent obligations, then as a consequence
-you may not distribute the Program at all. For example, if a patent license would
-not permit royalty-free redistribution of the Program by all those who receive
-copies directly or indirectly through you, then the only way you could satisfy
-both it and this License would be to refrain entirely from distribution of the
-Program.
-
-If any portion of this section is held invalid or unenforceable under any particular
-circumstance, the balance of the section is intended to apply and the section as
-a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or other
-property right claims or to contest validity of any such claims; this section has
-the sole purpose of protecting the integrity of the free software distribution
-system, which is implemented by public license practices. Many people have
-made generous contributions to the wide range of software distributed through
-that system in reliance on consistent application of that system; it is up to the
-author/donor to decide if he or she is willing to distribute software through any
-other system and a licensee cannot impose that choice.
-
-This section is intended to make thoroughly clear what is believed to be a
-consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain countries
-either by patents or by copyrighted interfaces, the original copyright holder who
-places the Program under this License may add an explicit geographical
-distribution limitation excluding those countries, so that distribution is permitted
-only in or among countries not thus excluded. In such case, this License
-incorporates the limitation as if written in the body of this License.
-
-9. The Free Software Foundation may publish revised and/or new versions of the
-General Public License from time to time. Such new versions will be similar in
-spirit to the present version, but may differ in detail to address new problems or
-concerns.
-
-Each version is given a distinguishing version number. If the Program specifies a
-version number of this License which applies to it and "any later version", you
-have the option of following the terms and conditions either of that version or of
-any later version published by the Free Software Foundation. If the Program does
-not specify a version number of this License, you may choose any version ever
-published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs
-whose distribution conditions are different, write to the author to ask for
-permission. For software which is copyrighted by the Free Software Foundation,
-write to the Free Software Foundation; we sometimes make exceptions for this.
-Our decision will be guided by the two goals of preserving the free status of all
-derivatives of our free software and of promoting the sharing and reuse of
-software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS
-NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
-COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
-"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
-IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
-ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
-YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
-CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
-TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
-WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS
-PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
-(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
-OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 
-END OF TERMS AND CONDITIONS
+--- The Artistic License 1.0 ---
 
+This software is Copyright (c) 2003 by Adam Kennedy.
 
-----------------------------------------------------------------------------
+This is free software, licensed under:
+
+  The Artistic License 1.0
 
 The Artistic License
 
@@ -278,88 +284,85 @@ Preamble
 
 The intent of this document is to state the conditions under which a Package
 may be copied, such that the Copyright Holder maintains some semblance of
-artistic control over the development of the package, while giving the users of the
-package the right to use and distribute the Package in a more-or-less customary
-fashion, plus the right to make reasonable modifications.
+artistic control over the development of the package, while giving the users of
+the package the right to use and distribute the Package in a more-or-less
+customary fashion, plus the right to make reasonable modifications.
 
 Definitions:
 
--    "Package" refers to the collection of files distributed by the Copyright
-     Holder, and derivatives of that collection of files created through textual
-     modification. 
--    "Standard Version" refers to such a Package if it has not been modified,
-     or has been modified in accordance with the wishes of the Copyright
-     Holder. 
--    "Copyright Holder" is whoever is named in the copyright or copyrights for
-     the package. 
--    "You" is you, if you're thinking about copying or distributing this Package.
--    "Reasonable copying fee" is whatever you can justify on the basis of
-     media cost, duplication charges, time of people involved, and so on. (You
-     will not be required to justify it to the Copyright Holder, but only to the
-     computing community at large as a market that must bear the fee.) 
--    "Freely Available" means that no fee is charged for the item itself, though
-     there may be fees involved in handling the item. It also means that
-     recipients of the item may redistribute it under the same conditions they
-     received it. 
+  - "Package" refers to the collection of files distributed by the Copyright
+    Holder, and derivatives of that collection of files created through
+    textual modification. 
+  - "Standard Version" refers to such a Package if it has not been modified,
+    or has been modified in accordance with the wishes of the Copyright
+    Holder. 
+  - "Copyright Holder" is whoever is named in the copyright or copyrights for
+    the package. 
+  - "You" is you, if you're thinking about copying or distributing this Package.
+  - "Reasonable copying fee" is whatever you can justify on the basis of media
+    cost, duplication charges, time of people involved, and so on. (You will
+    not be required to justify it to the Copyright Holder, but only to the
+    computing community at large as a market that must bear the fee.) 
+  - "Freely Available" means that no fee is charged for the item itself, though
+    there may be fees involved in handling the item. It also means that
+    recipients of the item may redistribute it under the same conditions they
+    received it. 
 
 1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you duplicate
-all of the original copyright notices and associated disclaimers.
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
 
-2. You may apply bug fixes, portability fixes and other modifications derived from
-the Public Domain or from the Copyright Holder. A Package modified in such a
-way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and when
-you changed that file, and provided that you do at least ONE of the following:
-
-     a) place your modifications in the Public Domain or otherwise
-     make them Freely Available, such as by posting said modifications
-     to Usenet or an equivalent medium, or placing the modifications on
-     a major archive site such as ftp.uu.net, or by allowing the
-     Copyright Holder to include your modifications in the Standard
-     Version of the Package.
-
-     b) use the modified Package only within your corporation or
-     organization.
-
-     c) rename any non-standard executables so the names do not
-     conflict with standard executables, which must also be provided,
-     and provide a separate manual page for each non-standard
-     executable that clearly documents how it differs from the Standard
-     Version.
+2. You may apply bug fixes, portability fixes and other modifications derived
+from the Public Domain or from the Copyright Holder. A Package modified in such
+a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that
+you insert a prominent notice in each changed file stating how and when you
+changed that file, and provided that you do at least ONE of the following:
+
+  a) place your modifications in the Public Domain or otherwise make them
+     Freely Available, such as by posting said modifications to Usenet or an
+     equivalent medium, or placing the modifications on a major archive site
+     such as ftp.uu.net, or by allowing the Copyright Holder to include your
+     modifications in the Standard Version of the Package.
+
+  b) use the modified Package only within your corporation or organization.
+
+  c) rename any non-standard executables so the names do not conflict with
+     standard executables, which must also be provided, and provide a separate
+     manual page for each non-standard executable that clearly documents how it
+     differs from the Standard Version.
 
-     d) make other distribution arrangements with the Copyright Holder.
+  d) make other distribution arrangements with the Copyright Holder.
 
 4. You may distribute the programs of this Package in object code or executable
 form, provided that you do at least ONE of the following:
 
-     a) distribute a Standard Version of the executables and library
-     files, together with instructions (in the manual page or equivalent)
-     on where to get the Standard Version.
-
-     b) accompany the distribution with the machine-readable source of
-     the Package with your modifications.
-
-     c) accompany any non-standard executables with their
-     corresponding Standard Version executables, giving the
-     non-standard executables non-standard names, and clearly
-     documenting the differences in manual pages (or equivalent),
-     together with instructions on where to get the Standard Version.
-
-     d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this Package.
-You may charge any fee you choose for support of this Package. You may not
-charge a fee for this Package itself. However, you may distribute this Package in
-aggregate with other (possibly commercial) programs as part of a larger
-(possibly commercial) software distribution provided that you do not advertise
-this Package as a product of your own.
-
-6. The scripts and library files supplied as input to or produced as output from
-the programs of this Package do not automatically fall under the copyright of this
-Package, but belong to whomever generated them, and may be sold
+  a) distribute a Standard Version of the executables and library files,
+     together with instructions (in the manual page or equivalent) on where to
+     get the Standard Version.
+
+  b) accompany the distribution with the machine-readable source of the Package
+     with your modifications.
+
+  c) accompany any non-standard executables with their corresponding Standard
+     Version executables, giving the non-standard executables non-standard
+     names, and clearly documenting the differences in manual pages (or
+     equivalent), together with instructions on where to get the Standard
+     Version.
+
+  d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package.  You may charge any fee you choose for support of this Package. You
+may not charge a fee for this Package itself. However, you may distribute this
+Package in aggregate with other (possibly commercial) programs as part of a
+larger (possibly commercial) software distribution provided that you do not
+advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output
+from the programs of this Package do not automatically fall under the copyright
+of this Package, but belong to whomever generated them, and may be sold
 commercially, and may be aggregated with this Package.
 
 7. C or perl subroutines supplied by you and linked into this Package shall not
@@ -368,11 +371,9 @@ be considered part of this Package.
 8. The name of the Copyright Holder may not be used to endorse or promote
 products derived from this software without specific prior written permission.
 
-9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
 The End
 
-
diff -pruN 1.110-1.3/MANIFEST 1.112-1/MANIFEST
--- 1.110-1.3/MANIFEST	2009-04-14 09:16:08.000000000 +0000
+++ 1.112-1/MANIFEST	2020-04-28 03:15:31.000000000 +0000
@@ -1,13 +1,14 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.014.
+CONTRIBUTING
 Changes
-inc/Module/Install.pm
-inc/Module/Install/Base.pm
-inc/Module/Install/Can.pm
-inc/Module/Install/DSL.pm
-inc/Module/Install/Fetch.pm
-inc/Module/Install/Makefile.pm
-inc/Module/Install/Metadata.pm
-inc/Module/Install/Win32.pm
-inc/Module/Install/WriteAll.pm
+INSTALL
+LICENSE
+MANIFEST
+META.json
+META.yml
+Makefile.PL
+README
+dist.ini
 lib/Algorithm/Dependency.pm
 lib/Algorithm/Dependency/Item.pm
 lib/Algorithm/Dependency/Ordered.pm
@@ -16,11 +17,8 @@ lib/Algorithm/Dependency/Source/File.pm
 lib/Algorithm/Dependency/Source/HoA.pm
 lib/Algorithm/Dependency/Source/Invert.pm
 lib/Algorithm/Dependency/Weight.pm
-LICENSE
-Makefile.PL
-MANIFEST			This list of files
-META.yml
-README
+t/00-report-prereqs.dd
+t/00-report-prereqs.t
 t/01_compile.t
 t/02_api.t
 t/03_basics.t
@@ -29,10 +27,20 @@ t/05_ordered.t
 t/06_ignore_orphans.t
 t/07_hoa.t
 t/08_weight.t
-t/97_meta.t
-t/98_pod.t
-t/99_pmv.t
 t/data/basics.txt
 t/data/circular.txt
 t/data/complex.txt
 t/data/missing.txt
+xt/author/00-compile.t
+xt/author/changes_has_content.t
+xt/author/kwalitee.t
+xt/author/minimum-version.t
+xt/author/mojibake.t
+xt/author/pod-coverage.t
+xt/author/pod-no404s.t
+xt/author/pod-spell.t
+xt/author/pod-syntax.t
+xt/author/portability.t
+xt/release/changes_has_content.t
+xt/release/cpan-changes.t
+xt/release/distmeta.t
diff -pruN 1.110-1.3/META.json 1.112-1/META.json
--- 1.110-1.3/META.json	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/META.json	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,1268 @@
+{
+   "abstract" : "Base class for implementing various dependency trees",
+   "author" : [
+      "Adam Kennedy <adamk@cpan.org>"
+   ],
+   "dynamic_config" : 0,
+   "generated_by" : "Dist::Zilla version 6.014, CPAN::Meta::Converter version 2.150010",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : 2
+   },
+   "name" : "Algorithm-Dependency",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "xt"
+      ]
+   },
+   "prereqs" : {
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0",
+            "perl" : "5.006"
+         }
+      },
+      "develop" : {
+         "recommends" : {
+            "Dist::Zilla::PluginBundle::Author::ETHER" : "0.154",
+            "Dist::Zilla::PluginBundle::Git::VersionManager" : "0.007"
+         },
+         "requires" : {
+            "Encode" : "0",
+            "File::Spec" : "0",
+            "IO::Handle" : "0",
+            "IPC::Open3" : "0",
+            "Pod::Coverage::TrustPod" : "0",
+            "Pod::Wordlist" : "0",
+            "Test::CPAN::Changes" : "0.19",
+            "Test::CPAN::Meta" : "0",
+            "Test::Kwalitee" : "1.21",
+            "Test::MinimumVersion" : "0",
+            "Test::Mojibake" : "0",
+            "Test::More" : "0.96",
+            "Test::Pod" : "1.41",
+            "Test::Pod::Coverage" : "1.08",
+            "Test::Pod::No404s" : "0",
+            "Test::Portability::Files" : "0",
+            "Test::Spelling" : "0.12",
+            "perl" : "5.006",
+            "warnings" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "List::Util" : "1.11",
+            "Params::Util" : "0.31",
+            "perl" : "5.006",
+            "strict" : "0"
+         }
+      },
+      "test" : {
+         "recommends" : {
+            "CPAN::Meta" : "2.120900"
+         },
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0",
+            "File::Spec" : "0.80",
+            "File::Spec::Functions" : "0",
+            "Test::ClassAPI" : "0.6",
+            "Test::More" : "0.47",
+            "perl" : "5.006",
+            "warnings" : "0"
+         }
+      },
+      "x_Dist_Zilla" : {
+         "requires" : {
+            "Dist::Zilla" : "5",
+            "Dist::Zilla::Plugin::Authority" : "1.009",
+            "Dist::Zilla::Plugin::AutoMetaResources" : "0",
+            "Dist::Zilla::Plugin::AutoPrereqs" : "5.038",
+            "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : "0.004",
+            "Dist::Zilla::Plugin::CheckIssues" : "0",
+            "Dist::Zilla::Plugin::CheckMetaResources" : "0",
+            "Dist::Zilla::Plugin::CheckPrereqsIndexed" : "0.019",
+            "Dist::Zilla::Plugin::CheckSelfDependency" : "0",
+            "Dist::Zilla::Plugin::CheckStrictVersion" : "0",
+            "Dist::Zilla::Plugin::ConfirmRelease" : "0",
+            "Dist::Zilla::Plugin::CopyFilesFromRelease" : "0",
+            "Dist::Zilla::Plugin::EnsureLatestPerl" : "0",
+            "Dist::Zilla::Plugin::FileFinder::ByName" : "0",
+            "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : "0",
+            "Dist::Zilla::Plugin::Git::Check" : "0",
+            "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch" : "0.004",
+            "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts" : "0",
+            "Dist::Zilla::Plugin::Git::Commit" : "2.020",
+            "Dist::Zilla::Plugin::Git::Contributors" : "0.029",
+            "Dist::Zilla::Plugin::Git::Describe" : "0.004",
+            "Dist::Zilla::Plugin::Git::GatherDir" : "2.016",
+            "Dist::Zilla::Plugin::Git::Push" : "0",
+            "Dist::Zilla::Plugin::Git::Remote::Check" : "0",
+            "Dist::Zilla::Plugin::Git::Tag" : "0",
+            "Dist::Zilla::Plugin::GitHub::Update" : "0.40",
+            "Dist::Zilla::Plugin::GithubMeta" : "0.54",
+            "Dist::Zilla::Plugin::InstallGuide" : "1.200005",
+            "Dist::Zilla::Plugin::Keywords" : "0.004",
+            "Dist::Zilla::Plugin::License" : "5.038",
+            "Dist::Zilla::Plugin::MakeMaker" : "0",
+            "Dist::Zilla::Plugin::Manifest" : "0",
+            "Dist::Zilla::Plugin::MetaConfig" : "0",
+            "Dist::Zilla::Plugin::MetaJSON" : "0",
+            "Dist::Zilla::Plugin::MetaNoIndex" : "0",
+            "Dist::Zilla::Plugin::MetaProvides::Package" : "1.15000002",
+            "Dist::Zilla::Plugin::MetaTests" : "0",
+            "Dist::Zilla::Plugin::MetaYAML" : "0",
+            "Dist::Zilla::Plugin::MinimumPerl" : "1.006",
+            "Dist::Zilla::Plugin::MojibakeTests" : "0.8",
+            "Dist::Zilla::Plugin::NextRelease" : "5.033",
+            "Dist::Zilla::Plugin::PodCoverageTests" : "5.040",
+            "Dist::Zilla::Plugin::PodSyntaxTests" : "5.040",
+            "Dist::Zilla::Plugin::PodWeaver" : "4.005",
+            "Dist::Zilla::Plugin::Prereqs" : "0",
+            "Dist::Zilla::Plugin::Prereqs::AuthorDeps" : "0.006",
+            "Dist::Zilla::Plugin::PromptIfStale" : "0",
+            "Dist::Zilla::Plugin::Readme" : "0",
+            "Dist::Zilla::Plugin::ReadmeAnyFromPod" : "0.142180",
+            "Dist::Zilla::Plugin::RewriteVersion::Transitional" : "0.004",
+            "Dist::Zilla::Plugin::Run::AfterBuild" : "0.041",
+            "Dist::Zilla::Plugin::Run::AfterRelease" : "0.038",
+            "Dist::Zilla::Plugin::RunExtraTests" : "0.024",
+            "Dist::Zilla::Plugin::StaticInstall" : "0.005",
+            "Dist::Zilla::Plugin::Test::CPAN::Changes" : "0.012",
+            "Dist::Zilla::Plugin::Test::ChangesHasContent" : "0",
+            "Dist::Zilla::Plugin::Test::Compile" : "2.039",
+            "Dist::Zilla::Plugin::Test::Kwalitee" : "2.10",
+            "Dist::Zilla::Plugin::Test::MinimumVersion" : "2.000010",
+            "Dist::Zilla::Plugin::Test::Pod::No404s" : "1.003",
+            "Dist::Zilla::Plugin::Test::PodSpelling" : "2.006003",
+            "Dist::Zilla::Plugin::Test::Portability" : "2.000007",
+            "Dist::Zilla::Plugin::Test::ReportPrereqs" : "0.022",
+            "Dist::Zilla::Plugin::TestRelease" : "0",
+            "Dist::Zilla::Plugin::UploadToCPAN" : "0",
+            "Dist::Zilla::Plugin::UseUnsafeInc" : "0",
+            "Dist::Zilla::PluginBundle::Author::ETHER" : "0.119",
+            "Dist::Zilla::PluginBundle::Git::VersionManager" : "0.007",
+            "Software::License::Perl_5" : "0"
+         }
+      }
+   },
+   "provides" : {
+      "Algorithm::Dependency" : {
+         "file" : "lib/Algorithm/Dependency.pm",
+         "version" : "1.112"
+      },
+      "Algorithm::Dependency::Item" : {
+         "file" : "lib/Algorithm/Dependency/Item.pm",
+         "version" : "1.112"
+      },
+      "Algorithm::Dependency::Ordered" : {
+         "file" : "lib/Algorithm/Dependency/Ordered.pm",
+         "version" : "1.112"
+      },
+      "Algorithm::Dependency::Source" : {
+         "file" : "lib/Algorithm/Dependency/Source.pm",
+         "version" : "1.112"
+      },
+      "Algorithm::Dependency::Source::File" : {
+         "file" : "lib/Algorithm/Dependency/Source/File.pm",
+         "version" : "1.112"
+      },
+      "Algorithm::Dependency::Source::HoA" : {
+         "file" : "lib/Algorithm/Dependency/Source/HoA.pm",
+         "version" : "1.112"
+      },
+      "Algorithm::Dependency::Source::Invert" : {
+         "file" : "lib/Algorithm/Dependency/Source/Invert.pm",
+         "version" : "1.112"
+      },
+      "Algorithm::Dependency::Weight" : {
+         "file" : "lib/Algorithm/Dependency/Weight.pm",
+         "version" : "1.112"
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "bugtracker" : {
+         "mailto" : "bug-Algorithm-Dependency@rt.cpan.org",
+         "web" : "https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency"
+      },
+      "homepage" : "https://github.com/karenetheridge/Algorithm-Dependency",
+      "repository" : {
+         "type" : "git",
+         "url" : "https://github.com/karenetheridge/Algorithm-Dependency.git",
+         "web" : "https://github.com/karenetheridge/Algorithm-Dependency"
+      }
+   },
+   "version" : "1.112",
+   "x_Dist_Zilla" : {
+      "perl" : {
+         "version" : "5.031010"
+      },
+      "plugins" : [
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "develop",
+                  "type" : "recommends"
+               }
+            },
+            "name" : "@Author::ETHER/pluginbundle version",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PromptIfStale",
+            "config" : {
+               "Dist::Zilla::Plugin::PromptIfStale" : {
+                  "check_all_plugins" : 0,
+                  "check_all_prereqs" : 0,
+                  "modules" : [
+                     "Dist::Zilla::PluginBundle::Author::ETHER"
+                  ],
+                  "phase" : "build",
+                  "run_under_travis" : 0,
+                  "skip" : []
+               }
+            },
+            "name" : "@Author::ETHER/stale modules, build",
+            "version" : "0.055"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FileFinder::ByName",
+            "name" : "@Author::ETHER/Examples",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::GatherDir",
+            "config" : {
+               "Dist::Zilla::Plugin::GatherDir" : {
+                  "exclude_filename" : [
+                     "CONTRIBUTING",
+                     "INSTALL",
+                     "LICENSE",
+                     "README.pod"
+                  ],
+                  "exclude_match" : [],
+                  "follow_symlinks" : 0,
+                  "include_dotfiles" : 0,
+                  "prefix" : "",
+                  "prune_directory" : [],
+                  "root" : "."
+               },
+               "Dist::Zilla::Plugin::Git::GatherDir" : {
+                  "include_untracked" : 0
+               }
+            },
+            "name" : "@Author::ETHER/Git::GatherDir",
+            "version" : "2.046"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaYAML",
+            "name" : "@Author::ETHER/MetaYAML",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaJSON",
+            "name" : "@Author::ETHER/MetaJSON",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Readme",
+            "name" : "@Author::ETHER/Readme",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Manifest",
+            "name" : "@Author::ETHER/Manifest",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::License",
+            "name" : "@Author::ETHER/License",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GenerateFile::FromShareDir",
+            "config" : {
+               "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : {
+                  "destination_filename" : "CONTRIBUTING",
+                  "dist" : "Dist-Zilla-PluginBundle-Author-ETHER",
+                  "encoding" : "UTF-8",
+                  "has_xs" : 0,
+                  "location" : "build",
+                  "source_filename" : "CONTRIBUTING"
+               },
+               "Dist::Zilla::Role::RepoFileInjector" : {
+                  "allow_overwrite" : 1,
+                  "repo_root" : ".",
+                  "version" : "0.009"
+               }
+            },
+            "name" : "@Author::ETHER/generate CONTRIBUTING",
+            "version" : "0.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::InstallGuide",
+            "config" : {
+               "Dist::Zilla::Role::ModuleMetadata" : {
+                  "Module::Metadata" : "1.000037",
+                  "version" : "0.006"
+               }
+            },
+            "name" : "@Author::ETHER/InstallGuide",
+            "version" : "1.200013"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Compile",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::Compile" : {
+                  "bail_out_on_fail" : 1,
+                  "fail_on_warning" : "author",
+                  "fake_home" : 0,
+                  "filename" : "xt/author/00-compile.t",
+                  "module_finder" : [
+                     ":InstallModules"
+                  ],
+                  "needs_display" : 0,
+                  "phase" : "develop",
+                  "script_finder" : [
+                     ":PerlExecFiles",
+                     "@Author::ETHER/Examples"
+                  ],
+                  "skips" : [],
+                  "switch" : []
+               }
+            },
+            "name" : "@Author::ETHER/Test::Compile",
+            "version" : "2.058"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaTests",
+            "name" : "@Author::ETHER/MetaTests",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::CPAN::Changes" : {
+                  "changelog" : "Changes"
+               }
+            },
+            "name" : "@Author::ETHER/Test::CPAN::Changes",
+            "version" : "0.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GenerateFile::FromShareDir",
+            "config" : {
+               "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : {
+                  "destination_filename" : "xt/author/changes_has_content.t",
+                  "dist" : "Dist-Zilla-PluginBundle-Author-ETHER",
+                  "encoding" : "UTF-8",
+                  "location" : "build",
+                  "source_filename" : "changes_has_content.t"
+               },
+               "Dist::Zilla::Role::RepoFileInjector" : {
+                  "allow_overwrite" : 1,
+                  "repo_root" : ".",
+                  "version" : "0.009"
+               }
+            },
+            "name" : "@Author::ETHER/generate xt/author/changes_has_content.t",
+            "version" : "0.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent",
+            "name" : "@Author::ETHER/Test::ChangesHasContent",
+            "version" : "0.011"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::MinimumVersion",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::MinimumVersion" : {
+                  "max_target_perl" : "5.006"
+               }
+            },
+            "name" : "@Author::ETHER/Test::MinimumVersion",
+            "version" : "2.000010"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
+            "name" : "@Author::ETHER/PodSyntaxTests",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodCoverageTests",
+            "name" : "@Author::ETHER/PodCoverageTests",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::PodSpelling",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::PodSpelling" : {
+                  "directories" : [
+                     "examples",
+                     "lib",
+                     "script",
+                     "t",
+                     "xt"
+                  ],
+                  "spell_cmd" : "",
+                  "stopwords" : [
+                     "ARRAYs",
+                     "irc",
+                     "param",
+                     "readonly",
+                     "unselected"
+                  ],
+                  "wordlist" : "Pod::Wordlist"
+               }
+            },
+            "name" : "@Author::ETHER/Test::PodSpelling",
+            "version" : "2.007005"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Pod::No404s",
+            "name" : "@Author::ETHER/Test::Pod::No404s",
+            "version" : "1.004"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Kwalitee",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::Kwalitee" : {
+                  "filename" : "xt/author/kwalitee.t",
+                  "skiptest" : []
+               }
+            },
+            "name" : "@Author::ETHER/Test::Kwalitee",
+            "version" : "2.12"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MojibakeTests",
+            "name" : "@Author::ETHER/MojibakeTests",
+            "version" : "0.8"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
+            "name" : "@Author::ETHER/Test::ReportPrereqs",
+            "version" : "0.027"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Portability",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::Portability" : {
+                  "options" : ""
+               }
+            },
+            "name" : "@Author::ETHER/Test::Portability",
+            "version" : "2.001000"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Describe",
+            "name" : "@Author::ETHER/Git::Describe",
+            "version" : "0.007"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodWeaver",
+            "config" : {
+               "Dist::Zilla::Plugin::PodWeaver" : {
+                  "config_plugins" : [
+                     "@Author::ETHER"
+                  ],
+                  "finder" : [
+                     ":InstallModules",
+                     ":ExecFiles"
+                  ],
+                  "plugins" : [
+                     {
+                        "class" : "Pod::Weaver::Plugin::EnsurePod5",
+                        "name" : "@Author::ETHER/EnsurePod5",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::H1Nester",
+                        "name" : "@Author::ETHER/H1Nester",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::SingleEncoding",
+                        "name" : "@Author::ETHER/SingleEncoding",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::Transformer",
+                        "name" : "@Author::ETHER/List",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::Transformer",
+                        "name" : "@Author::ETHER/Verbatim",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "@Author::ETHER/header",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Name",
+                        "name" : "@Author::ETHER/Name",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Version",
+                        "name" : "@Author::ETHER/Version",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "@Author::ETHER/prelude",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "SYNOPSIS",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "DESCRIPTION",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "OVERVIEW",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "ATTRIBUTES",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "METHODS",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "FUNCTIONS",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "TYPES",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Leftovers",
+                        "name" : "@Author::ETHER/Leftovers",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "@Author::ETHER/postlude",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::GenerateSection",
+                        "name" : "@Author::ETHER/generate SUPPORT",
+                        "version" : "1.06"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::AllowOverride",
+                        "name" : "@Author::ETHER/allow override SUPPORT",
+                        "version" : "0.05"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Authors",
+                        "name" : "@Author::ETHER/Authors",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::AllowOverride",
+                        "name" : "@Author::ETHER/allow override AUTHOR",
+                        "version" : "0.05"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Contributors",
+                        "name" : "@Author::ETHER/Contributors",
+                        "version" : "0.009"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Legal",
+                        "name" : "@Author::ETHER/Legal",
+                        "version" : "4.015"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "@Author::ETHER/footer",
+                        "version" : "4.015"
+                     }
+                  ]
+               }
+            },
+            "name" : "@Author::ETHER/PodWeaver",
+            "version" : "4.008"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GithubMeta",
+            "name" : "@Author::ETHER/GithubMeta",
+            "version" : "0.58"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::AutoMetaResources",
+            "name" : "@Author::ETHER/AutoMetaResources",
+            "version" : "1.21"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Authority",
+            "name" : "@Author::ETHER/Authority",
+            "version" : "1.009"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaNoIndex",
+            "name" : "@Author::ETHER/MetaNoIndex",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
+            "config" : {
+               "Dist::Zilla::Plugin::MetaProvides::Package" : {
+                  "finder" : [
+                     ":InstallModules"
+                  ],
+                  "finder_objects" : [
+                     {
+                        "class" : "Dist::Zilla::Plugin::FinderCode",
+                        "name" : ":InstallModules",
+                        "version" : "6.014"
+                     }
+                  ],
+                  "include_underscores" : 0
+               },
+               "Dist::Zilla::Role::MetaProvider::Provider" : {
+                  "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" : "2.002004",
+                  "inherit_missing" : 0,
+                  "inherit_version" : 0,
+                  "meta_noindex" : 1
+               },
+               "Dist::Zilla::Role::ModuleMetadata" : {
+                  "Module::Metadata" : "1.000037",
+                  "version" : "0.006"
+               }
+            },
+            "name" : "@Author::ETHER/MetaProvides::Package",
+            "version" : "2.004003"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaConfig",
+            "name" : "@Author::ETHER/MetaConfig",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Keywords",
+            "config" : {
+               "Dist::Zilla::Plugin::Keywords" : {
+                  "keywords" : []
+               }
+            },
+            "name" : "@Author::ETHER/Keywords",
+            "version" : "0.007"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::UseUnsafeInc",
+            "config" : {
+               "Dist::Zilla::Plugin::UseUnsafeInc" : {
+                  "dot_in_INC" : 0
+               }
+            },
+            "name" : "@Author::ETHER/UseUnsafeInc",
+            "version" : "0.001"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::AutoPrereqs",
+            "name" : "@Author::ETHER/AutoPrereqs",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs::AuthorDeps",
+            "name" : "@Author::ETHER/Prereqs::AuthorDeps",
+            "version" : "0.006"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MinimumPerl",
+            "name" : "@Author::ETHER/MinimumPerl",
+            "version" : "1.006"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MakeMaker",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 9
+               }
+            },
+            "name" : "@Author::ETHER/MakeMaker",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Contributors",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Contributors" : {
+                  "git_version" : "2.25.0",
+                  "include_authors" : 0,
+                  "include_releaser" : 1,
+                  "order_by" : "commits",
+                  "paths" : []
+               }
+            },
+            "name" : "@Author::ETHER/Git::Contributors",
+            "version" : "0.035"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::StaticInstall",
+            "config" : {
+               "Dist::Zilla::Plugin::StaticInstall" : {
+                  "dry_run" : 1,
+                  "mode" : "auto"
+               }
+            },
+            "name" : "@Author::ETHER/StaticInstall",
+            "version" : "0.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::RunExtraTests",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 9
+               }
+            },
+            "name" : "@Author::ETHER/RunExtraTests",
+            "version" : "0.029"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckSelfDependency",
+            "config" : {
+               "Dist::Zilla::Plugin::CheckSelfDependency" : {
+                  "finder" : [
+                     ":InstallModules"
+                  ]
+               },
+               "Dist::Zilla::Role::ModuleMetadata" : {
+                  "Module::Metadata" : "1.000037",
+                  "version" : "0.006"
+               }
+            },
+            "name" : "@Author::ETHER/CheckSelfDependency",
+            "version" : "0.011"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Run::AfterBuild",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "fatal_errors" : 1,
+                  "quiet" : 1,
+                  "run" : [
+                     "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\""
+                  ],
+                  "version" : "0.048"
+               }
+            },
+            "name" : "@Author::ETHER/.ackrc",
+            "version" : "0.048"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Run::AfterBuild",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "eval" : [
+                     "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }"
+                  ],
+                  "fatal_errors" : 0,
+                  "quiet" : 1,
+                  "version" : "0.048"
+               }
+            },
+            "name" : "@Author::ETHER/.latest",
+            "version" : "0.048"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckStrictVersion",
+            "name" : "@Author::ETHER/CheckStrictVersion",
+            "version" : "0.001"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckMetaResources",
+            "name" : "@Author::ETHER/CheckMetaResources",
+            "version" : "0.001"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::EnsureLatestPerl",
+            "config" : {
+               "Dist::Zilla::Plugin::EnsureLatestPerl" : {
+                  "Module::CoreList" : "5.20200320"
+               }
+            },
+            "name" : "@Author::ETHER/EnsureLatestPerl",
+            "version" : "0.008"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PromptIfStale",
+            "config" : {
+               "Dist::Zilla::Plugin::PromptIfStale" : {
+                  "check_all_plugins" : 1,
+                  "check_all_prereqs" : 1,
+                  "modules" : [],
+                  "phase" : "release",
+                  "run_under_travis" : 0,
+                  "skip" : []
+               }
+            },
+            "name" : "@Author::ETHER/stale modules, release",
+            "version" : "0.055"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Check",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Check" : {
+                  "untracked_files" : "die"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@Author::ETHER/initial check",
+            "version" : "2.046"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts",
+            "config" : {
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@Author::ETHER/Git::CheckFor::MergeConflicts",
+            "version" : "0.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
+            "config" : {
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@Author::ETHER/Git::CheckFor::CorrectBranch",
+            "version" : "0.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Remote::Check",
+            "name" : "@Author::ETHER/Git::Remote::Check",
+            "version" : "0.1.2"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
+            "name" : "@Author::ETHER/CheckPrereqsIndexed",
+            "version" : "0.020"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::TestRelease",
+            "name" : "@Author::ETHER/TestRelease",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Check",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Check" : {
+                  "untracked_files" : "die"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@Author::ETHER/after tests",
+            "version" : "2.046"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckIssues",
+            "name" : "@Author::ETHER/CheckIssues",
+            "version" : "0.011"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::UploadToCPAN",
+            "name" : "@Author::ETHER/UploadToCPAN",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::CopyFilesFromRelease" : {
+                  "filename" : [
+                     "CONTRIBUTING",
+                     "INSTALL",
+                     "LICENCE",
+                     "LICENSE",
+                     "ppport.h"
+                  ],
+                  "match" : []
+               }
+            },
+            "name" : "@Author::ETHER/copy generated files",
+            "version" : "0.007"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
+            "config" : {
+               "Dist::Zilla::Role::FileWatcher" : {
+                  "version" : "0.006"
+               }
+            },
+            "name" : "@Author::ETHER/ReadmeAnyFromPod",
+            "version" : "0.163250"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "develop",
+                  "type" : "recommends"
+               }
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/pluginbundle version",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::RewriteVersion::Transitional",
+            "config" : {
+               "Dist::Zilla::Plugin::RewriteVersion" : {
+                  "add_tarball_name" : 0,
+                  "finders" : [
+                     ":ExecFiles",
+                     ":InstallModules"
+                  ],
+                  "global" : 1,
+                  "skip_version_provider" : 0
+               },
+               "Dist::Zilla::Plugin::RewriteVersion::Transitional" : {}
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/RewriteVersion::Transitional",
+            "version" : "0.009"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaProvides::Update",
+            "name" : "@Author::ETHER/@Git::VersionManager/MetaProvides::Update",
+            "version" : "0.007"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::CopyFilesFromRelease" : {
+                  "filename" : [
+                     "Changes"
+                  ],
+                  "match" : []
+               }
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/CopyFilesFromRelease",
+            "version" : "0.007"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Commit",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Commit" : {
+                  "add_files_in" : [
+                     "."
+                  ],
+                  "commit_msg" : "%N-%v%t%n%n%c"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [
+                     "CONTRIBUTING",
+                     "Changes",
+                     "INSTALL",
+                     "LICENSE",
+                     "README.pod"
+                  ],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               },
+               "Dist::Zilla::Role::Git::StringFormatter" : {
+                  "time_zone" : "local"
+               }
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/release snapshot",
+            "version" : "2.046"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Tag",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Tag" : {
+                  "branch" : null,
+                  "changelog" : "Changes",
+                  "signed" : 0,
+                  "tag" : "v1.112",
+                  "tag_format" : "v%V",
+                  "tag_message" : "v%v%t"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               },
+               "Dist::Zilla::Role::Git::StringFormatter" : {
+                  "time_zone" : "local"
+               }
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/Git::Tag",
+            "version" : "2.046"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional",
+            "config" : {
+               "Dist::Zilla::Plugin::BumpVersionAfterRelease" : {
+                  "finders" : [
+                     ":ExecFiles",
+                     ":InstallModules"
+                  ],
+                  "global" : 1,
+                  "munge_makefile_pl" : 1
+               },
+               "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : {}
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/BumpVersionAfterRelease::Transitional",
+            "version" : "0.009"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::NextRelease",
+            "name" : "@Author::ETHER/@Git::VersionManager/NextRelease",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Commit",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Commit" : {
+                  "add_files_in" : [],
+                  "commit_msg" : "increment $VERSION after %v release"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [
+                     "Build.PL",
+                     "Changes",
+                     "Makefile.PL"
+                  ],
+                  "allow_dirty_match" : [
+                     "(?^:^lib/.*\\.pm$)"
+                  ],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               },
+               "Dist::Zilla::Role::Git::StringFormatter" : {
+                  "time_zone" : "local"
+               }
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/post-release commit",
+            "version" : "2.046"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "x_Dist_Zilla",
+                  "type" : "requires"
+               }
+            },
+            "name" : "@Author::ETHER/@Git::VersionManager/prereqs for @Git::VersionManager",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Push",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Push" : {
+                  "push_to" : [
+                     "origin"
+                  ],
+                  "remotes_must_exist" : 1
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "git_version" : "2.25.0",
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@Author::ETHER/Git::Push",
+            "version" : "2.046"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GitHub::Update",
+            "config" : {
+               "Dist::Zilla::Plugin::GitHub::Update" : {
+                  "metacpan" : 1
+               }
+            },
+            "name" : "@Author::ETHER/GitHub::Update",
+            "version" : "0.47"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Run::AfterRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "fatal_errors" : 0,
+                  "quiet" : 0,
+                  "run" : [
+                     "REDACTED"
+                  ],
+                  "version" : "0.048"
+               }
+            },
+            "name" : "@Author::ETHER/install release",
+            "version" : "0.048"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Run::AfterRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "eval" : [
+                     "print \"release complete!\\xa\""
+                  ],
+                  "fatal_errors" : 1,
+                  "quiet" : 1,
+                  "version" : "0.048"
+               }
+            },
+            "name" : "@Author::ETHER/release complete",
+            "version" : "0.048"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ConfirmRelease",
+            "name" : "@Author::ETHER/ConfirmRelease",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "x_Dist_Zilla",
+                  "type" : "requires"
+               }
+            },
+            "name" : "@Author::ETHER/prereqs for @Author::ETHER",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "runtime",
+                  "type" : "requires"
+               }
+            },
+            "name" : "Prereqs",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "test",
+                  "type" : "requires"
+               }
+            },
+            "name" : "TestRequires",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":InstallModules",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":IncModules",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":TestFiles",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ExtraTestFiles",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ExecFiles",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":PerlExecFiles",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ShareFiles",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":MainModule",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":AllFiles",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":NoFiles",
+            "version" : "6.014"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::VerifyPhases",
+            "name" : "@Author::ETHER/PHASE VERIFICATION",
+            "version" : "0.016"
+         }
+      ],
+      "zilla" : {
+         "class" : "Dist::Zilla::Dist::Builder",
+         "config" : {
+            "is_trial" : 0
+         },
+         "version" : "6.014"
+      }
+   },
+   "x_authority" : "cpan:ADAMK",
+   "x_contributors" : [
+      "Adam Kennedy <adam@ali.as>",
+      "Karen Etheridge <ether@cpan.org>",
+      "Mark Murawski <markm@intellasoft.net>"
+   ],
+   "x_generated_by_perl" : "v5.31.10",
+   "x_serialization_backend" : "Cpanel::JSON::XS version 4.19",
+   "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later",
+   "x_use_unsafe_inc" : 0
+}
+
diff -pruN 1.110-1.3/META.yml 1.112-1/META.yml
--- 1.110-1.3/META.yml	2009-04-14 09:16:08.000000000 +0000
+++ 1.112-1/META.yml	2020-04-28 03:15:31.000000000 +0000
@@ -3,30 +3,869 @@ abstract: 'Base class for implementing v
 author:
   - 'Adam Kennedy <adamk@cpan.org>'
 build_requires:
-  ExtUtils::MakeMaker: 6.42
-  File::Spec: 0.80
-  Test::ClassAPI: 0.6
-  Test::More: 0.47
+  ExtUtils::MakeMaker: '0'
+  File::Spec: '0.80'
+  File::Spec::Functions: '0'
+  Test::ClassAPI: '0.6'
+  Test::More: '0.47'
+  perl: '5.006'
+  warnings: '0'
 configure_requires:
-  ExtUtils::MakeMaker: 6.42
-distribution_type: module
-generated_by: 'Module::Install version 0.83'
+  ExtUtils::MakeMaker: '0'
+  perl: '5.006'
+dynamic_config: 0
+generated_by: 'Dist::Zilla version 6.014, CPAN::Meta::Converter version 2.150010'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
-module_name: Algorithm::Dependency
+  version: '1.4'
 name: Algorithm-Dependency
 no_index:
   directory:
-    - inc
     - t
+    - xt
+provides:
+  Algorithm::Dependency:
+    file: lib/Algorithm/Dependency.pm
+    version: '1.112'
+  Algorithm::Dependency::Item:
+    file: lib/Algorithm/Dependency/Item.pm
+    version: '1.112'
+  Algorithm::Dependency::Ordered:
+    file: lib/Algorithm/Dependency/Ordered.pm
+    version: '1.112'
+  Algorithm::Dependency::Source:
+    file: lib/Algorithm/Dependency/Source.pm
+    version: '1.112'
+  Algorithm::Dependency::Source::File:
+    file: lib/Algorithm/Dependency/Source/File.pm
+    version: '1.112'
+  Algorithm::Dependency::Source::HoA:
+    file: lib/Algorithm/Dependency/Source/HoA.pm
+    version: '1.112'
+  Algorithm::Dependency::Source::Invert:
+    file: lib/Algorithm/Dependency/Source/Invert.pm
+    version: '1.112'
+  Algorithm::Dependency::Weight:
+    file: lib/Algorithm/Dependency/Weight.pm
+    version: '1.112'
 requires:
-  List::Util: 1.11
-  Params::Util: 0.31
-  perl: 5.005
+  List::Util: '1.11'
+  Params::Util: '0.31'
+  perl: '5.006'
+  strict: '0'
 resources:
-  ChangeLog: http://fisheye2.atlassian.com/changelog/cpan/trunk/Algorithm-Dependency
-  license: http://dev.perl.org/licenses/
-  repository: http://svn.ali.as/cpan/trunk/Algorithm-Dependency
-version: 1.110
+  bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency
+  homepage: https://github.com/karenetheridge/Algorithm-Dependency
+  repository: https://github.com/karenetheridge/Algorithm-Dependency.git
+version: '1.112'
+x_Dist_Zilla:
+  perl:
+    version: '5.031010'
+  plugins:
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: develop
+          type: recommends
+      name: '@Author::ETHER/pluginbundle version'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::PromptIfStale
+      config:
+        Dist::Zilla::Plugin::PromptIfStale:
+          check_all_plugins: 0
+          check_all_prereqs: 0
+          modules:
+            - Dist::Zilla::PluginBundle::Author::ETHER
+          phase: build
+          run_under_travis: 0
+          skip: []
+      name: '@Author::ETHER/stale modules, build'
+      version: '0.055'
+    -
+      class: Dist::Zilla::Plugin::FileFinder::ByName
+      name: '@Author::ETHER/Examples'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Git::GatherDir
+      config:
+        Dist::Zilla::Plugin::GatherDir:
+          exclude_filename:
+            - CONTRIBUTING
+            - INSTALL
+            - LICENSE
+            - README.pod
+          exclude_match: []
+          follow_symlinks: 0
+          include_dotfiles: 0
+          prefix: ''
+          prune_directory: []
+          root: .
+        Dist::Zilla::Plugin::Git::GatherDir:
+          include_untracked: 0
+      name: '@Author::ETHER/Git::GatherDir'
+      version: '2.046'
+    -
+      class: Dist::Zilla::Plugin::MetaYAML
+      name: '@Author::ETHER/MetaYAML'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::MetaJSON
+      name: '@Author::ETHER/MetaJSON'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Readme
+      name: '@Author::ETHER/Readme'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Manifest
+      name: '@Author::ETHER/Manifest'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::License
+      name: '@Author::ETHER/License'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::GenerateFile::FromShareDir
+      config:
+        Dist::Zilla::Plugin::GenerateFile::FromShareDir:
+          destination_filename: CONTRIBUTING
+          dist: Dist-Zilla-PluginBundle-Author-ETHER
+          encoding: UTF-8
+          has_xs: 0
+          location: build
+          source_filename: CONTRIBUTING
+        Dist::Zilla::Role::RepoFileInjector:
+          allow_overwrite: 1
+          repo_root: .
+          version: '0.009'
+      name: '@Author::ETHER/generate CONTRIBUTING'
+      version: '0.014'
+    -
+      class: Dist::Zilla::Plugin::InstallGuide
+      config:
+        Dist::Zilla::Role::ModuleMetadata:
+          Module::Metadata: '1.000037'
+          version: '0.006'
+      name: '@Author::ETHER/InstallGuide'
+      version: '1.200013'
+    -
+      class: Dist::Zilla::Plugin::Test::Compile
+      config:
+        Dist::Zilla::Plugin::Test::Compile:
+          bail_out_on_fail: '1'
+          fail_on_warning: author
+          fake_home: 0
+          filename: xt/author/00-compile.t
+          module_finder:
+            - ':InstallModules'
+          needs_display: 0
+          phase: develop
+          script_finder:
+            - ':PerlExecFiles'
+            - '@Author::ETHER/Examples'
+          skips: []
+          switch: []
+      name: '@Author::ETHER/Test::Compile'
+      version: '2.058'
+    -
+      class: Dist::Zilla::Plugin::MetaTests
+      name: '@Author::ETHER/MetaTests'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Test::CPAN::Changes
+      config:
+        Dist::Zilla::Plugin::Test::CPAN::Changes:
+          changelog: Changes
+      name: '@Author::ETHER/Test::CPAN::Changes'
+      version: '0.012'
+    -
+      class: Dist::Zilla::Plugin::GenerateFile::FromShareDir
+      config:
+        Dist::Zilla::Plugin::GenerateFile::FromShareDir:
+          destination_filename: xt/author/changes_has_content.t
+          dist: Dist-Zilla-PluginBundle-Author-ETHER
+          encoding: UTF-8
+          location: build
+          source_filename: changes_has_content.t
+        Dist::Zilla::Role::RepoFileInjector:
+          allow_overwrite: 1
+          repo_root: .
+          version: '0.009'
+      name: '@Author::ETHER/generate xt/author/changes_has_content.t'
+      version: '0.014'
+    -
+      class: Dist::Zilla::Plugin::Test::ChangesHasContent
+      name: '@Author::ETHER/Test::ChangesHasContent'
+      version: '0.011'
+    -
+      class: Dist::Zilla::Plugin::Test::MinimumVersion
+      config:
+        Dist::Zilla::Plugin::Test::MinimumVersion:
+          max_target_perl: '5.006'
+      name: '@Author::ETHER/Test::MinimumVersion'
+      version: '2.000010'
+    -
+      class: Dist::Zilla::Plugin::PodSyntaxTests
+      name: '@Author::ETHER/PodSyntaxTests'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::PodCoverageTests
+      name: '@Author::ETHER/PodCoverageTests'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Test::PodSpelling
+      config:
+        Dist::Zilla::Plugin::Test::PodSpelling:
+          directories:
+            - examples
+            - lib
+            - script
+            - t
+            - xt
+          spell_cmd: ''
+          stopwords:
+            - ARRAYs
+            - irc
+            - param
+            - readonly
+            - unselected
+          wordlist: Pod::Wordlist
+      name: '@Author::ETHER/Test::PodSpelling'
+      version: '2.007005'
+    -
+      class: Dist::Zilla::Plugin::Test::Pod::No404s
+      name: '@Author::ETHER/Test::Pod::No404s'
+      version: '1.004'
+    -
+      class: Dist::Zilla::Plugin::Test::Kwalitee
+      config:
+        Dist::Zilla::Plugin::Test::Kwalitee:
+          filename: xt/author/kwalitee.t
+          skiptest: []
+      name: '@Author::ETHER/Test::Kwalitee'
+      version: '2.12'
+    -
+      class: Dist::Zilla::Plugin::MojibakeTests
+      name: '@Author::ETHER/MojibakeTests'
+      version: '0.8'
+    -
+      class: Dist::Zilla::Plugin::Test::ReportPrereqs
+      name: '@Author::ETHER/Test::ReportPrereqs'
+      version: '0.027'
+    -
+      class: Dist::Zilla::Plugin::Test::Portability
+      config:
+        Dist::Zilla::Plugin::Test::Portability:
+          options: ''
+      name: '@Author::ETHER/Test::Portability'
+      version: '2.001000'
+    -
+      class: Dist::Zilla::Plugin::Git::Describe
+      name: '@Author::ETHER/Git::Describe'
+      version: '0.007'
+    -
+      class: Dist::Zilla::Plugin::PodWeaver
+      config:
+        Dist::Zilla::Plugin::PodWeaver:
+          config_plugins:
+            - '@Author::ETHER'
+          finder:
+            - ':InstallModules'
+            - ':ExecFiles'
+          plugins:
+            -
+              class: Pod::Weaver::Plugin::EnsurePod5
+              name: '@Author::ETHER/EnsurePod5'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Plugin::H1Nester
+              name: '@Author::ETHER/H1Nester'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Plugin::SingleEncoding
+              name: '@Author::ETHER/SingleEncoding'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Plugin::Transformer
+              name: '@Author::ETHER/List'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Plugin::Transformer
+              name: '@Author::ETHER/Verbatim'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Region
+              name: '@Author::ETHER/header'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Name
+              name: '@Author::ETHER/Name'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Version
+              name: '@Author::ETHER/Version'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Region
+              name: '@Author::ETHER/prelude'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: SYNOPSIS
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: DESCRIPTION
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: OVERVIEW
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: ATTRIBUTES
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: METHODS
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: FUNCTIONS
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: TYPES
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Leftovers
+              name: '@Author::ETHER/Leftovers'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Region
+              name: '@Author::ETHER/postlude'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::GenerateSection
+              name: '@Author::ETHER/generate SUPPORT'
+              version: '1.06'
+            -
+              class: Pod::Weaver::Section::AllowOverride
+              name: '@Author::ETHER/allow override SUPPORT'
+              version: '0.05'
+            -
+              class: Pod::Weaver::Section::Authors
+              name: '@Author::ETHER/Authors'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::AllowOverride
+              name: '@Author::ETHER/allow override AUTHOR'
+              version: '0.05'
+            -
+              class: Pod::Weaver::Section::Contributors
+              name: '@Author::ETHER/Contributors'
+              version: '0.009'
+            -
+              class: Pod::Weaver::Section::Legal
+              name: '@Author::ETHER/Legal'
+              version: '4.015'
+            -
+              class: Pod::Weaver::Section::Region
+              name: '@Author::ETHER/footer'
+              version: '4.015'
+      name: '@Author::ETHER/PodWeaver'
+      version: '4.008'
+    -
+      class: Dist::Zilla::Plugin::GithubMeta
+      name: '@Author::ETHER/GithubMeta'
+      version: '0.58'
+    -
+      class: Dist::Zilla::Plugin::AutoMetaResources
+      name: '@Author::ETHER/AutoMetaResources'
+      version: '1.21'
+    -
+      class: Dist::Zilla::Plugin::Authority
+      name: '@Author::ETHER/Authority'
+      version: '1.009'
+    -
+      class: Dist::Zilla::Plugin::MetaNoIndex
+      name: '@Author::ETHER/MetaNoIndex'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::MetaProvides::Package
+      config:
+        Dist::Zilla::Plugin::MetaProvides::Package:
+          finder:
+            - ':InstallModules'
+          finder_objects:
+            -
+              class: Dist::Zilla::Plugin::FinderCode
+              name: ':InstallModules'
+              version: '6.014'
+          include_underscores: 0
+        Dist::Zilla::Role::MetaProvider::Provider:
+          $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002004'
+          inherit_missing: '0'
+          inherit_version: '0'
+          meta_noindex: '1'
+        Dist::Zilla::Role::ModuleMetadata:
+          Module::Metadata: '1.000037'
+          version: '0.006'
+      name: '@Author::ETHER/MetaProvides::Package'
+      version: '2.004003'
+    -
+      class: Dist::Zilla::Plugin::MetaConfig
+      name: '@Author::ETHER/MetaConfig'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Keywords
+      config:
+        Dist::Zilla::Plugin::Keywords:
+          keywords: []
+      name: '@Author::ETHER/Keywords'
+      version: '0.007'
+    -
+      class: Dist::Zilla::Plugin::UseUnsafeInc
+      config:
+        Dist::Zilla::Plugin::UseUnsafeInc:
+          dot_in_INC: 0
+      name: '@Author::ETHER/UseUnsafeInc'
+      version: '0.001'
+    -
+      class: Dist::Zilla::Plugin::AutoPrereqs
+      name: '@Author::ETHER/AutoPrereqs'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Prereqs::AuthorDeps
+      name: '@Author::ETHER/Prereqs::AuthorDeps'
+      version: '0.006'
+    -
+      class: Dist::Zilla::Plugin::MinimumPerl
+      name: '@Author::ETHER/MinimumPerl'
+      version: '1.006'
+    -
+      class: Dist::Zilla::Plugin::MakeMaker
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 9
+      name: '@Author::ETHER/MakeMaker'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Git::Contributors
+      config:
+        Dist::Zilla::Plugin::Git::Contributors:
+          git_version: 2.25.0
+          include_authors: 0
+          include_releaser: 1
+          order_by: commits
+          paths: []
+      name: '@Author::ETHER/Git::Contributors'
+      version: '0.035'
+    -
+      class: Dist::Zilla::Plugin::StaticInstall
+      config:
+        Dist::Zilla::Plugin::StaticInstall:
+          dry_run: 1
+          mode: auto
+      name: '@Author::ETHER/StaticInstall'
+      version: '0.012'
+    -
+      class: Dist::Zilla::Plugin::RunExtraTests
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 9
+      name: '@Author::ETHER/RunExtraTests'
+      version: '0.029'
+    -
+      class: Dist::Zilla::Plugin::CheckSelfDependency
+      config:
+        Dist::Zilla::Plugin::CheckSelfDependency:
+          finder:
+            - ':InstallModules'
+        Dist::Zilla::Role::ModuleMetadata:
+          Module::Metadata: '1.000037'
+          version: '0.006'
+      name: '@Author::ETHER/CheckSelfDependency'
+      version: '0.011'
+    -
+      class: Dist::Zilla::Plugin::Run::AfterBuild
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          fatal_errors: 1
+          quiet: 1
+          run:
+            - "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\""
+          version: '0.048'
+      name: '@Author::ETHER/.ackrc'
+      version: '0.048'
+    -
+      class: Dist::Zilla::Plugin::Run::AfterBuild
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          eval:
+            - "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }"
+          fatal_errors: 0
+          quiet: 1
+          version: '0.048'
+      name: '@Author::ETHER/.latest'
+      version: '0.048'
+    -
+      class: Dist::Zilla::Plugin::CheckStrictVersion
+      name: '@Author::ETHER/CheckStrictVersion'
+      version: '0.001'
+    -
+      class: Dist::Zilla::Plugin::CheckMetaResources
+      name: '@Author::ETHER/CheckMetaResources'
+      version: '0.001'
+    -
+      class: Dist::Zilla::Plugin::EnsureLatestPerl
+      config:
+        Dist::Zilla::Plugin::EnsureLatestPerl:
+          Module::CoreList: '5.20200320'
+      name: '@Author::ETHER/EnsureLatestPerl'
+      version: '0.008'
+    -
+      class: Dist::Zilla::Plugin::PromptIfStale
+      config:
+        Dist::Zilla::Plugin::PromptIfStale:
+          check_all_plugins: 1
+          check_all_prereqs: 1
+          modules: []
+          phase: release
+          run_under_travis: 0
+          skip: []
+      name: '@Author::ETHER/stale modules, release'
+      version: '0.055'
+    -
+      class: Dist::Zilla::Plugin::Git::Check
+      config:
+        Dist::Zilla::Plugin::Git::Check:
+          untracked_files: die
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty: []
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+      name: '@Author::ETHER/initial check'
+      version: '2.046'
+    -
+      class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts
+      config:
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+      name: '@Author::ETHER/Git::CheckFor::MergeConflicts'
+      version: '0.014'
+    -
+      class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
+      config:
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+      name: '@Author::ETHER/Git::CheckFor::CorrectBranch'
+      version: '0.014'
+    -
+      class: Dist::Zilla::Plugin::Git::Remote::Check
+      name: '@Author::ETHER/Git::Remote::Check'
+      version: 0.1.2
+    -
+      class: Dist::Zilla::Plugin::CheckPrereqsIndexed
+      name: '@Author::ETHER/CheckPrereqsIndexed'
+      version: '0.020'
+    -
+      class: Dist::Zilla::Plugin::TestRelease
+      name: '@Author::ETHER/TestRelease'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Git::Check
+      config:
+        Dist::Zilla::Plugin::Git::Check:
+          untracked_files: die
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty: []
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+      name: '@Author::ETHER/after tests'
+      version: '2.046'
+    -
+      class: Dist::Zilla::Plugin::CheckIssues
+      name: '@Author::ETHER/CheckIssues'
+      version: '0.011'
+    -
+      class: Dist::Zilla::Plugin::UploadToCPAN
+      name: '@Author::ETHER/UploadToCPAN'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::CopyFilesFromRelease
+      config:
+        Dist::Zilla::Plugin::CopyFilesFromRelease:
+          filename:
+            - CONTRIBUTING
+            - INSTALL
+            - LICENCE
+            - LICENSE
+            - ppport.h
+          match: []
+      name: '@Author::ETHER/copy generated files'
+      version: '0.007'
+    -
+      class: Dist::Zilla::Plugin::ReadmeAnyFromPod
+      config:
+        Dist::Zilla::Role::FileWatcher:
+          version: '0.006'
+      name: '@Author::ETHER/ReadmeAnyFromPod'
+      version: '0.163250'
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: develop
+          type: recommends
+      name: '@Author::ETHER/@Git::VersionManager/pluginbundle version'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::RewriteVersion::Transitional
+      config:
+        Dist::Zilla::Plugin::RewriteVersion:
+          add_tarball_name: 0
+          finders:
+            - ':ExecFiles'
+            - ':InstallModules'
+          global: 1
+          skip_version_provider: 0
+        Dist::Zilla::Plugin::RewriteVersion::Transitional: {}
+      name: '@Author::ETHER/@Git::VersionManager/RewriteVersion::Transitional'
+      version: '0.009'
+    -
+      class: Dist::Zilla::Plugin::MetaProvides::Update
+      name: '@Author::ETHER/@Git::VersionManager/MetaProvides::Update'
+      version: '0.007'
+    -
+      class: Dist::Zilla::Plugin::CopyFilesFromRelease
+      config:
+        Dist::Zilla::Plugin::CopyFilesFromRelease:
+          filename:
+            - Changes
+          match: []
+      name: '@Author::ETHER/@Git::VersionManager/CopyFilesFromRelease'
+      version: '0.007'
+    -
+      class: Dist::Zilla::Plugin::Git::Commit
+      config:
+        Dist::Zilla::Plugin::Git::Commit:
+          add_files_in:
+            - .
+          commit_msg: '%N-%v%t%n%n%c'
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty:
+            - CONTRIBUTING
+            - Changes
+            - INSTALL
+            - LICENSE
+            - README.pod
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+        Dist::Zilla::Role::Git::StringFormatter:
+          time_zone: local
+      name: '@Author::ETHER/@Git::VersionManager/release snapshot'
+      version: '2.046'
+    -
+      class: Dist::Zilla::Plugin::Git::Tag
+      config:
+        Dist::Zilla::Plugin::Git::Tag:
+          branch: ~
+          changelog: Changes
+          signed: 0
+          tag: v1.112
+          tag_format: v%V
+          tag_message: v%v%t
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+        Dist::Zilla::Role::Git::StringFormatter:
+          time_zone: local
+      name: '@Author::ETHER/@Git::VersionManager/Git::Tag'
+      version: '2.046'
+    -
+      class: Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional
+      config:
+        Dist::Zilla::Plugin::BumpVersionAfterRelease:
+          finders:
+            - ':ExecFiles'
+            - ':InstallModules'
+          global: 1
+          munge_makefile_pl: 1
+        Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional: {}
+      name: '@Author::ETHER/@Git::VersionManager/BumpVersionAfterRelease::Transitional'
+      version: '0.009'
+    -
+      class: Dist::Zilla::Plugin::NextRelease
+      name: '@Author::ETHER/@Git::VersionManager/NextRelease'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Git::Commit
+      config:
+        Dist::Zilla::Plugin::Git::Commit:
+          add_files_in: []
+          commit_msg: 'increment $VERSION after %v release'
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty:
+            - Build.PL
+            - Changes
+            - Makefile.PL
+          allow_dirty_match:
+            - (?^:^lib/.*\.pm$)
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+        Dist::Zilla::Role::Git::StringFormatter:
+          time_zone: local
+      name: '@Author::ETHER/@Git::VersionManager/post-release commit'
+      version: '2.046'
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: x_Dist_Zilla
+          type: requires
+      name: '@Author::ETHER/@Git::VersionManager/prereqs for @Git::VersionManager'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Git::Push
+      config:
+        Dist::Zilla::Plugin::Git::Push:
+          push_to:
+            - origin
+          remotes_must_exist: 1
+        Dist::Zilla::Role::Git::Repo:
+          git_version: 2.25.0
+          repo_root: .
+      name: '@Author::ETHER/Git::Push'
+      version: '2.046'
+    -
+      class: Dist::Zilla::Plugin::GitHub::Update
+      config:
+        Dist::Zilla::Plugin::GitHub::Update:
+          metacpan: 1
+      name: '@Author::ETHER/GitHub::Update'
+      version: '0.47'
+    -
+      class: Dist::Zilla::Plugin::Run::AfterRelease
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          fatal_errors: 0
+          quiet: 0
+          run:
+            - REDACTED
+          version: '0.048'
+      name: '@Author::ETHER/install release'
+      version: '0.048'
+    -
+      class: Dist::Zilla::Plugin::Run::AfterRelease
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          eval:
+            - 'print "release complete!\xa"'
+          fatal_errors: 1
+          quiet: 1
+          version: '0.048'
+      name: '@Author::ETHER/release complete'
+      version: '0.048'
+    -
+      class: Dist::Zilla::Plugin::ConfirmRelease
+      name: '@Author::ETHER/ConfirmRelease'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: x_Dist_Zilla
+          type: requires
+      name: '@Author::ETHER/prereqs for @Author::ETHER'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: runtime
+          type: requires
+      name: Prereqs
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: test
+          type: requires
+      name: TestRequires
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':InstallModules'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':IncModules'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':TestFiles'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ExtraTestFiles'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ExecFiles'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':PerlExecFiles'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ShareFiles'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':MainModule'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':AllFiles'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':NoFiles'
+      version: '6.014'
+    -
+      class: Dist::Zilla::Plugin::VerifyPhases
+      name: '@Author::ETHER/PHASE VERIFICATION'
+      version: '0.016'
+  zilla:
+    class: Dist::Zilla::Dist::Builder
+    config:
+      is_trial: '0'
+    version: '6.014'
+x_authority: cpan:ADAMK
+x_contributors:
+  - 'Adam Kennedy <adam@ali.as>'
+  - 'Karen Etheridge <ether@cpan.org>'
+  - 'Mark Murawski <markm@intellasoft.net>'
+x_generated_by_perl: v5.31.10
+x_serialization_backend: 'YAML::Tiny version 1.73'
+x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later'
+x_use_unsafe_inc: 0
diff -pruN 1.110-1.3/Makefile.PL 1.112-1/Makefile.PL
--- 1.110-1.3/Makefile.PL	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/Makefile.PL	2020-04-28 03:15:31.000000000 +0000
@@ -1,8 +1,61 @@
-use inc::Module::Install::DSL 0.83;
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.014.
+use strict;
+use warnings;
 
-all_from       lib/Algorithm/Dependency.pm
-requires       Params::Util   0.31
-requires       List::Util     1.11
-test_requires  Test::More     0.47
-test_requires  File::Spec     0.80
-test_requires  Test::ClassAPI 0.6
+use 5.006;
+
+use ExtUtils::MakeMaker;
+
+my %WriteMakefileArgs = (
+  "ABSTRACT" => "Base class for implementing various dependency trees",
+  "AUTHOR" => "Adam Kennedy <adamk\@cpan.org>",
+  "CONFIGURE_REQUIRES" => {
+    "ExtUtils::MakeMaker" => 0
+  },
+  "DISTNAME" => "Algorithm-Dependency",
+  "LICENSE" => "perl",
+  "MIN_PERL_VERSION" => "5.006",
+  "NAME" => "Algorithm::Dependency",
+  "PREREQ_PM" => {
+    "List::Util" => "1.11",
+    "Params::Util" => "0.31",
+    "strict" => 0
+  },
+  "TEST_REQUIRES" => {
+    "ExtUtils::MakeMaker" => 0,
+    "File::Spec" => "0.80",
+    "File::Spec::Functions" => 0,
+    "Test::ClassAPI" => "0.6",
+    "Test::More" => "0.47",
+    "warnings" => 0
+  },
+  "VERSION" => "1.112",
+  "test" => {
+    "TESTS" => "t/*.t"
+  }
+);
+
+
+my %FallbackPrereqs = (
+  "ExtUtils::MakeMaker" => 0,
+  "File::Spec" => "0.80",
+  "File::Spec::Functions" => 0,
+  "List::Util" => "1.11",
+  "Params::Util" => "0.31",
+  "Test::ClassAPI" => "0.6",
+  "Test::More" => "0.47",
+  "strict" => 0,
+  "warnings" => 0
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+  delete $WriteMakefileArgs{TEST_REQUIRES};
+  delete $WriteMakefileArgs{BUILD_REQUIRES};
+  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
+}
+
+delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
+  unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
+
+WriteMakefile(%WriteMakefileArgs);
diff -pruN 1.110-1.3/README 1.112-1/README
--- 1.110-1.3/README	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/README	2020-04-28 03:15:31.000000000 +0000
@@ -1,203 +1,12 @@
-NAME
-    Algorithm::Dependency - Base class for implementing various dependency
-    trees
+This archive contains the distribution Algorithm-Dependency,
+version 1.112:
 
-SYNOPSIS
-      use Algorithm::Dependency;
-      use Algorithm::Dependency::Source::File;
-      
-  # Load the data from a simple text file
-      my $data_source = Algorithm::Dependency::Source::File->new( 'foo.txt' );
-      
-  # Create the dependency object, and indicate the items that are already
-      # selected/installed/etc in the database
-      my $dep = Algorithm::Dependency->new(
-          source   => $data_source,
-          selected => [ 'This', 'That' ]
-          ) or die 'Failed to set up dependency algorithm';
-      
-  # For the item 'Foo', find out the other things we also have to select.
-      # This WON'T include the item we selected, 'Foo'.
-      my $also = $dep->depends( 'Foo' );
-      print $also
-            ? "By selecting 'Foo', you are also selecting the following items: "
-                    . join( ', ', @$also )
-            : "Nothing else to select for 'Foo'";
-      
-  # Find out the order we need to act on the items in.
-      # This WILL include the item we selected, 'Foo'.
-      my $schedule = $dep->schedule( 'Foo' );
+  Base class for implementing various dependency trees
 
-DESCRIPTION
-    Algorithm::Dependency is a framework for creating simple read-only
-    dependency heirachies, where you have a set of items that rely on other
-    items in the set, and require actions on them as well.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-    Despite the most visible of these being software installation systems
-    like the CPAN installer, or debian apt-get, they are usefull in other
-    situations. This module intentionally uses implementation-neutral words,
-    to avoid confusion.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
-  Terminology
-    The term "ITEM" refers to a single entity, such as a single software
-    package, in the overall set of possible entities. Internally, this is a
-    fairly simple object. See Algorithm::Dependency::Item for details.
-
-    The term "SELECT" means that a particular item, for your purposes, has
-    already been acted up in the required way. For example, if the software
-    package had already been installed, and didn't need to be re-installed,
-    it would be "SELECTED".
-
-    The term "SOURCE" refers to a location that contains the master set of
-    items. This will be very application specific, and might be a flat file,
-    some form of database, the list of files in a folder, or generated
-    dynamically.
-
-  General Description
-    Algorithm::Dependency implements algorithms relating to dependency
-    heirachies. To use this framework, all you need is a source for the
-    master list of all the items, and a list of those already selected. If
-    your dependency heirachy doesn't require the concept of items that are
-    already selected, simply don't pass anything to the constructor for it.
-
-    Please note that the class Algorithm::Dependency does NOT implement an
-    ordering, for speed and simplicity reasons. That is, the "schedule" it
-    provides is not in any particular order. If item 'A' depends on item
-    'B', it will not place B before A in the schedule. This makes it
-    unsuitable for things like software installers, as they typically would
-    need B to be installed before A, or the installation of A would fail.
-
-    For dependency heirachies requiring the items to be acted on in a
-    particular order, either top down or bottom up, see
-    Algorithm::Dependency::Ordered. It should be more applicable for your
-    needs. This is the the subclass you would probably use to implement a
-    simple ( non-versioned ) package installation system. Please note that
-    an ordered heirachy has additional constraints. For example, circular
-    dependencies ARE legal in a non-ordered heirachy, but ARE NOT legal in
-    an ordered heirachy.
-
-  Extending
-    A module for creating a source from a simple flat file is included. For
-    details see Algorithm::Dependency::Source::File. Information on creating
-    a source for your particular use is in Algorithm::Dependency::Source.
-
-METHODS
-  new %args
-    The constructor creates a new context object for the dependency
-    algorithms to act in. It takes as argument a series of options for
-    creating the object.
-
-    source => $Source
-        The only compulsory option is the source of the dependency items.
-        This is an object of a subclass of Algorithm::Dependency::Source. In
-        practical terms, this means you will create the source object before
-        creating the Algorithm::Dependency object.
-
-    selected => [ 'A', 'B', 'C', etc... ]
-        The "selected" option provides a list of those items that have
-        already been 'selected', acted upon, installed, or whatever. If
-        another item depends on one in this list, we don't have to include
-        it in the output of the "schedule" or "depends" methods.
-
-    ignore_orphans => 1
-        Normally, the item source is expected to be largely perfect and
-        error free. An 'orphan' is an item name that appears as a dependency
-        of another item, but doesn't exist, or has been deleted.
-
-        By providing the "ignore_orphans" flag, orphans are simply ignored.
-        Without the "ignore_orphans" flag, an error will be returned if an
-        orphan is found.
-
-    The "new" constructor returns a new Algorithm::Dependency object on
-    success, or "undef" on error.
-
-  source
-    The "source" method retrieves the Algorithm::Dependency::Source object
-    for the algorithm context.
-
-  selected_list
-    The "selected_list" method returns, as a list and in alphabetical order,
-    the list of the names of the selected items.
-
-  selected $name
-    Given an item name, the "selected" method will return true if the item
-    is selected, false is not, or "undef" if the item does not exist, or an
-    error occurs.
-
-  item $name
-    The "item" method fetches and returns the item object, as specified by
-    the name argument.
-
-    Returns an Algorithm::Dependency::Item object on success, or "undef" if
-    an item does not exist for the argument provided.
-
-  depends $name1, ..., $nameN
-    Given a list of one or more item names, the "depends" method will return
-    a reference to an array containing a list of the names of all the OTHER
-    items that also have to be selected to meet dependencies.
-
-    That is, if item A depends on B and C then the "depends" method would
-    return a reference to an array with B and C. ( "[ 'B', 'C' ]" )
-
-    If multiple item names are provided, the same applies. The list returned
-    will not contain duplicates.
-
-    The method returns a reference to an array of item names on success, a
-    reference to an empty array if no other items are needed, or "undef" on
-    error.
-
-  schedule $name1, ..., $nameN
-    Given a list of one or more item names, the "depends" method will
-    return, as a reference to an array, the ordered list of items you should
-    act upon.
-
-    This would be the original names provided, plus those added to satisfy
-    dependencies, in the prefered order of action. For the normal algorithm,
-    where order it not important, this is alphabetical order. This makes it
-    easier for someone watching a program operate on the items to determine
-    how far you are through the task and makes any logs easier to read.
-
-    If any of the names you provided in the arguments is already selected,
-    it will not be included in the list.
-
-    The method returns a reference to an array of item names on success, a
-    reference to an empty array if no items need to be acted upon, or
-    "undef" on error.
-
-  schedule_all;
-    The "schedule_all" method acts the same as the "schedule" method, but
-    returns a schedule that selected all the so-far unselected items.
-
-TO DO
-    Add the "check_source" method, to verify the integrity of the source.
-
-    Possibly add Algorithm::Dependency::Versions, to implement an ordered
-    dependency tree with versions, like for perl modules.
-
-    Currently readonly. Make the whole thing writable, so the module can be
-    used as the core of an actual dependency application, as opposed to just
-    being a tool.
-
-SUPPORT
-    Bugs should be submitted via the CPAN bug tracker, located at
-
-    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
-
-    For general comments, contact the author.
-
-AUTHOR
-    Adam Kennedy <adamk@cpan.org>
-
-SEE ALSO
-    Algorithm::Dependency::Ordered, Algorithm::Dependency::Item,
-    Algorithm::Dependency::Source, Algorithm::Dependency::Source::File
-
-COPYRIGHT
-    Copyright 2003 - 2009 Adam Kennedy.
-
-    This program is free software; you can redistribute it and/or modify it
-    under the same terms as Perl itself.
-
-    The full text of the license can be found in the LICENSE file included
-    with this module.
 
+This README file was generated by Dist::Zilla::Plugin::Readme v6.014.
diff -pruN 1.110-1.3/debian/changelog 1.112-1/debian/changelog
--- 1.110-1.3/debian/changelog	2024-07-09 20:41:44.000000000 +0000
+++ 1.112-1/debian/changelog	2025-09-18 08:52:45.000000000 +0000
@@ -1,3 +1,18 @@
+libalgorithm-dependency-perl (1.112-1) unstable; urgency=medium
+
+  * Maintain package in Debian Perl Group
+    Closes: #1112292
+  * Add watch file
+  * d/copyright: DEP5
+  * New upstream version
+  * Standards-Version: 4.7.2 (routine-update)
+  * debhelper-compat 13 (routine-update)
+  * debputy lint --auto-fix (routine-update)
+  * Fix Homepage
+  * Annotat Build-Depends nocheck
+
+ -- Andreas Tille <tille@debian.org>  Thu, 18 Sep 2025 10:52:45 +0200
+
 libalgorithm-dependency-perl (1.110-1.3) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -pruN 1.110-1.3/debian/compat 1.112-1/debian/compat
--- 1.110-1.3/debian/compat	2024-07-09 20:41:21.000000000 +0000
+++ 1.112-1/debian/compat	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-8
diff -pruN 1.110-1.3/debian/control 1.112-1/debian/control
--- 1.110-1.3/debian/control	2024-07-09 20:41:21.000000000 +0000
+++ 1.112-1/debian/control	2025-09-18 08:52:45.000000000 +0000
@@ -1,15 +1,28 @@
 Source: libalgorithm-dependency-perl
+Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
+Uploaders: Jonas Genannt <jonas.genannt@capi2name.de>,
+           Andreas Tille <tille@debian.org>
 Section: perl
+Testsuite: autopkgtest-pkg-perl
 Priority: optional
-Build-Depends: debhelper (>= 8)
-Build-Depends-Indep: perl (>= 5.8.0-7), libparams-util-perl, libtest-classapi-perl, libpath-class-perl
-Maintainer: Jonas Genannt <jonas.genannt@capi2name.de>
-Standards-Version: 3.9.2
-Homepage: http://search.cpan.org/dist/Algorithm-Dependency/
+Build-Depends: debhelper-compat (= 13)
+Build-Depends-Indep: perl,
+                     libparams-util-perl <!nocheck>,
+                     libscalar-list-utils-perl <!nocheck>,
+                     libtest-classapi-perl <!nocheck>,
+                     libtest-simple-perl <!nocheck>
+Standards-Version: 4.7.2
+Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/libalgorithm-dependency-perl
+Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/libalgorithm-dependency-perl.git
+Homepage: https://metacpan.org/release/Algorithm-Dependency
 
 Package: libalgorithm-dependency-perl
 Architecture: all
-Depends: ${perl:Depends}, ${misc:Depends}, libparams-util-perl, libtest-classapi-perl, libpath-class-perl
+Depends: ${perl:Depends},
+         ${misc:Depends},
+         libparams-util-perl,
+         libtest-classapi-perl,
+         libpath-class-perl
 Description: Base class for implementing various dependency trees in Perl
  Algorithm::Dependency is a framework for creating simple read-only dependency
  heirachies, where you have a set of items that rely on other items
diff -pruN 1.110-1.3/debian/copyright 1.112-1/debian/copyright
--- 1.110-1.3/debian/copyright	2024-07-09 20:41:21.000000000 +0000
+++ 1.112-1/debian/copyright	2025-09-18 08:52:45.000000000 +0000
@@ -1,18 +1,28 @@
-This is the debian package for the Algorithm::Dependency module.
-It was created by Jonas Genannt <jonas.genannt@capi2name.de> using dh-make-perl.
-
-It was downloaded from http://search.cpan.org/~adamk/
-
-The upstream author is: Adam Kennedy <cpan@ali.as>
-
-Copyright 2003-2005 Adam Kennedy. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-Perl is distributed under your choice of the GNU General Public License or
-the Artistic License.
-
-On Debian GNU/Linux systems, the complete text of the
-GNU General Public License can be found in `/usr/share/common-licenses/GPL'
-and the Artistic Licence in `/usr/share/common-licenses/Artistic'.
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Source: https://metacpan.org/release/Algorithm-Dependency
+Upstream-Contact: Adam Kennedy <adamk@cpan.org>
+Upstream-Name: Algorithm-Dependency
+
+Files: *
+Copyright: 2003-2009 Adam Kennedy
+License: Artistic or GPL-1+
+
+Files: debian/*
+Copyright: 2005-2011 Jonas Genannt <jonas.genannt@capi2name.de>
+License: Artistic or GPL-1+
+
+License: Artistic
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the Artistic License, which comes with Perl.
+ .
+ On Debian systems, the complete text of the Artistic License can be
+ found in `/usr/share/common-licenses/Artistic'.
+
+License: GPL-1+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+ .
+ On Debian systems, the complete text of version 1 of the GNU General
+ Public License can be found in `/usr/share/common-licenses/GPL-1'.
diff -pruN 1.110-1.3/debian/watch 1.112-1/debian/watch
--- 1.110-1.3/debian/watch	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/debian/watch	2025-09-18 08:52:45.000000000 +0000
@@ -0,0 +1,2 @@
+version=4
+https://metacpan.org/release/Algorithm-Dependency   .*/Algorithm-Dependency-v?@ANY_VERSION@@ARCHIVE_EXT@$
diff -pruN 1.110-1.3/dist.ini 1.112-1/dist.ini
--- 1.110-1.3/dist.ini	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/dist.ini	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,26 @@
+name                = Algorithm-Dependency
+author              = Adam Kennedy <adamk@cpan.org>
+copyright_holder    = Adam Kennedy
+copyright_year      = 2003
+license             = Perl_5
+
+[@Author::ETHER]
+:version = 0.119
+authority = cpan:ADAMK
+installer = MakeMaker
+-remove = Test::EOL
+-remove = Test::NoTabs
+-remove = Test::CleanNamespaces ; TODO
+Test::PodSpelling.stopwords[0] = param
+Test::PodSpelling.stopwords[1] = readonly
+Test::PodSpelling.stopwords[2] = unselected
+Test::PodSpelling.stopwords[3] = ARRAYs
+
+[Prereqs]
+Params::Util = 0.31
+List::Util = 1.11
+
+[Prereqs / TestRequires]
+Test::More = 0.47
+File::Spec = 0.80
+Test::ClassAPI = 0.6
diff -pruN 1.110-1.3/inc/Module/Install/Base.pm 1.112-1/inc/Module/Install/Base.pm
--- 1.110-1.3/inc/Module/Install/Base.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/Base.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,81 +0,0 @@
-#line 1
-package Module::Install::Base;
-
-$VERSION = '0.83';
-
-# Suspend handler for "redefined" warnings
-BEGIN {
-	my $w = $SIG{__WARN__};
-	$SIG{__WARN__} = sub { $w };
-}
-
-### This is the ONLY module that shouldn't have strict on
-# use strict;
-
-#line 41
-
-sub new {
-	my ($class, %args) = @_;
-
-	foreach my $method ( qw(call load) ) {
-		next if defined &{"$class\::$method"};
-		*{"$class\::$method"} = sub {
-			shift()->_top->$method(@_);
-		};
-	}
-
-	bless( \%args, $class );
-}
-
-#line 62
-
-sub AUTOLOAD {
-	my $self = shift;
-	local $@;
-	my $autoload = eval {
-		$self->_top->autoload
-	} or return;
-	goto &$autoload;
-}
-
-#line 79
-
-sub _top {
-	$_[0]->{_top};
-}
-
-#line 94
-
-sub admin {
-	$_[0]->_top->{admin}
-	or
-	Module::Install::Base::FakeAdmin->new;
-}
-
-#line 110
-
-sub is_admin {
-	$_[0]->admin->VERSION;
-}
-
-sub DESTROY {}
-
-package Module::Install::Base::FakeAdmin;
-
-my $fake;
-sub new {
-	$fake ||= bless(\@_, $_[0]);
-}
-
-sub AUTOLOAD {}
-
-sub DESTROY {}
-
-# Restore warning handler
-BEGIN {
-	$SIG{__WARN__} = $SIG{__WARN__}->();
-}
-
-1;
-
-#line 157
diff -pruN 1.110-1.3/inc/Module/Install/Can.pm 1.112-1/inc/Module/Install/Can.pm
--- 1.110-1.3/inc/Module/Install/Can.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/Can.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,81 +0,0 @@
-#line 1
-package Module::Install::Can;
-
-use strict;
-use Module::Install::Base;
-use Config              ();
-use File::Spec          ();
-use ExtUtils::MakeMaker ();
-
-use vars qw{$VERSION $ISCORE @ISA};
-BEGIN {
-	$VERSION = '0.83';
-	$ISCORE  = 1;
-	@ISA     = qw{Module::Install::Base};
-}
-
-# check if we can load some module
-### Upgrade this to not have to load the module if possible
-sub can_use {
-	my ($self, $mod, $ver) = @_;
-	$mod =~ s{::|\\}{/}g;
-	$mod .= '.pm' unless $mod =~ /\.pm$/i;
-
-	my $pkg = $mod;
-	$pkg =~ s{/}{::}g;
-	$pkg =~ s{\.pm$}{}i;
-
-	local $@;
-	eval { require $mod; $pkg->VERSION($ver || 0); 1 };
-}
-
-# check if we can run some command
-sub can_run {
-	my ($self, $cmd) = @_;
-
-	my $_cmd = $cmd;
-	return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
-
-	for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
-		next if $dir eq '';
-		my $abs = File::Spec->catfile($dir, $_[1]);
-		return $abs if (-x $abs or $abs = MM->maybe_command($abs));
-	}
-
-	return;
-}
-
-# can we locate a (the) C compiler
-sub can_cc {
-	my $self   = shift;
-	my @chunks = split(/ /, $Config::Config{cc}) or return;
-
-	# $Config{cc} may contain args; try to find out the program part
-	while (@chunks) {
-		return $self->can_run("@chunks") || (pop(@chunks), next);
-	}
-
-	return;
-}
-
-# Fix Cygwin bug on maybe_command();
-if ( $^O eq 'cygwin' ) {
-	require ExtUtils::MM_Cygwin;
-	require ExtUtils::MM_Win32;
-	if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) {
-		*ExtUtils::MM_Cygwin::maybe_command = sub {
-			my ($self, $file) = @_;
-			if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) {
-				ExtUtils::MM_Win32->maybe_command($file);
-			} else {
-				ExtUtils::MM_Unix->maybe_command($file);
-			}
-		}
-	}
-}
-
-1;
-
-__END__
-
-#line 156
diff -pruN 1.110-1.3/inc/Module/Install/DSL.pm 1.112-1/inc/Module/Install/DSL.pm
--- 1.110-1.3/inc/Module/Install/DSL.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/DSL.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,95 +0,0 @@
-#line 1
-package Module::Install::DSL;
-
-use strict;
-use vars qw{$VERSION $ISCORE};
-BEGIN {
-	$VERSION = '0.83';
-	$ISCORE  = 1;
-	*inc::Module::Install::DSL::VERSION = *VERSION;
-	@inc::Module::Install::DSL::ISA     = __PACKAGE__;
-}
-
-# Load the main Module::Install as usual.
-# require Module::Install;
-
-sub import {
-	# Read in the rest of the Makefile.PL
-	open 0 or die "Couldn't open $0: $!";
-	my $dsl;
-	SCOPE: {
-		local $/ = undef;
-		$dsl = join "", <0>;
-	}
-
-	# Change inc::Module::Install::DSL to the regular one.
-	# Remove anything before the use inc::... line.
-	$dsl =~ s/.*?^\s*use\s+(?:inc::)?Module::Install::DSL(\b[^;]*);\s*\n//sm;
-
-	# Load inc::Module::Install as we would in a regular Makefile.Pl
-	SCOPE: {
-		package main;
-		require inc::Module::Install;
-		inc::Module::Install->import;
-	}
-
-	# Add the ::DSL plugin to the list of packages in /inc
-	my $admin = $Module::Install::MAIN->{admin};
-	if ( $admin ) {
-		my $from = $INC{"$admin->{path}/DSL.pm"};
-		my $to   = "$admin->{base}/$admin->{prefix}/$admin->{path}/DSL.pm";
-		$admin->copy( $from => $to );
-	}
-
-	# Convert the basic syntax to code
-	my $code = "package main;\n\n"
-	         . dsl2code($dsl)
-	         . "\n\nWriteAll();\n";
-
-	# Execute the script
-	eval $code;
-	print STDERR "Failed to execute the generated code" if $@;
-
-	exit(0);
-}
-
-sub dsl2code {
-	my $dsl = shift;
-
-	# Split into lines and strip blanks
-	my @lines = grep { /\S/ } split /[\012\015]+/, $dsl;
-
-	# Each line represents one command
-	my @code = ();
-	foreach my $line ( @lines ) {
-		# Split the lines into tokens
-		my @tokens = split /\s+/, $line;
-
-		# The first word is the command
-		my $command = shift @tokens;
-		my @params  = ();
-		my @suffix  = ();
-		while ( @tokens ) {
-			my $token = shift @tokens;
-			if ( $token eq 'if' or $token eq 'unless' ) {
-				# This is the beginning of a suffix
-				push @suffix, $token;
-				push @suffix, @tokens;
-				last;
-			} else {
-				# Convert to a string
-				$token =~ s/([\\\'])/\\$1/g;
-				push @params, "'$token'";
-			}	
-		};
-
-		# Merge to create the final line of code
-		@tokens = ( $command, @params ? join( ', ', @params ) : (), @suffix );
-		push @code, join( ' ', @tokens ) . ";\n";
-	}
-
-	# Join into the complete code block
-	return join( '', @code );
-}
-
-1;
diff -pruN 1.110-1.3/inc/Module/Install/Fetch.pm 1.112-1/inc/Module/Install/Fetch.pm
--- 1.110-1.3/inc/Module/Install/Fetch.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/Fetch.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,93 +0,0 @@
-#line 1
-package Module::Install::Fetch;
-
-use strict;
-use Module::Install::Base;
-
-use vars qw{$VERSION $ISCORE @ISA};
-BEGIN {
-	$VERSION = '0.83';
-	$ISCORE  = 1;
-	@ISA     = qw{Module::Install::Base};
-}
-
-sub get_file {
-    my ($self, %args) = @_;
-    my ($scheme, $host, $path, $file) =
-        $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
-
-    if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) {
-        $args{url} = $args{ftp_url}
-            or (warn("LWP support unavailable!\n"), return);
-        ($scheme, $host, $path, $file) =
-            $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
-    }
-
-    $|++;
-    print "Fetching '$file' from $host... ";
-
-    unless (eval { require Socket; Socket::inet_aton($host) }) {
-        warn "'$host' resolve failed!\n";
-        return;
-    }
-
-    return unless $scheme eq 'ftp' or $scheme eq 'http';
-
-    require Cwd;
-    my $dir = Cwd::getcwd();
-    chdir $args{local_dir} or return if exists $args{local_dir};
-
-    if (eval { require LWP::Simple; 1 }) {
-        LWP::Simple::mirror($args{url}, $file);
-    }
-    elsif (eval { require Net::FTP; 1 }) { eval {
-        # use Net::FTP to get past firewall
-        my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
-        $ftp->login("anonymous", 'anonymous@example.com');
-        $ftp->cwd($path);
-        $ftp->binary;
-        $ftp->get($file) or (warn("$!\n"), return);
-        $ftp->quit;
-    } }
-    elsif (my $ftp = $self->can_run('ftp')) { eval {
-        # no Net::FTP, fallback to ftp.exe
-        require FileHandle;
-        my $fh = FileHandle->new;
-
-        local $SIG{CHLD} = 'IGNORE';
-        unless ($fh->open("|$ftp -n")) {
-            warn "Couldn't open ftp: $!\n";
-            chdir $dir; return;
-        }
-
-        my @dialog = split(/\n/, <<"END_FTP");
-open $host
-user anonymous anonymous\@example.com
-cd $path
-binary
-get $file $file
-quit
-END_FTP
-        foreach (@dialog) { $fh->print("$_\n") }
-        $fh->close;
-    } }
-    else {
-        warn "No working 'ftp' program available!\n";
-        chdir $dir; return;
-    }
-
-    unless (-f $file) {
-        warn "Fetching failed: $@\n";
-        chdir $dir; return;
-    }
-
-    return if exists $args{size} and -s $file != $args{size};
-    system($args{run}) if exists $args{run};
-    unlink($file) if $args{remove};
-
-    print(((!exists $args{check_for} or -e $args{check_for})
-        ? "done!" : "failed! ($!)"), "\n");
-    chdir $dir; return !$?;
-}
-
-1;
diff -pruN 1.110-1.3/inc/Module/Install/Makefile.pm 1.112-1/inc/Module/Install/Makefile.pm
--- 1.110-1.3/inc/Module/Install/Makefile.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/Makefile.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,268 +0,0 @@
-#line 1
-package Module::Install::Makefile;
-
-use strict 'vars';
-use Module::Install::Base;
-use ExtUtils::MakeMaker ();
-
-use vars qw{$VERSION $ISCORE @ISA};
-BEGIN {
-	$VERSION = '0.83';
-	$ISCORE  = 1;
-	@ISA     = qw{Module::Install::Base};
-}
-
-sub Makefile { $_[0] }
-
-my %seen = ();
-
-sub prompt {
-	shift;
-
-	# Infinite loop protection
-	my @c = caller();
-	if ( ++$seen{"$c[1]|$c[2]|$_[0]"} > 3 ) {
-		die "Caught an potential prompt infinite loop ($c[1]|$c[2]|$_[0])";
-	}
-
-	# In automated testing, always use defaults
-	if ( $ENV{AUTOMATED_TESTING} and ! $ENV{PERL_MM_USE_DEFAULT} ) {
-		local $ENV{PERL_MM_USE_DEFAULT} = 1;
-		goto &ExtUtils::MakeMaker::prompt;
-	} else {
-		goto &ExtUtils::MakeMaker::prompt;
-	}
-}
-
-sub makemaker_args {
-	my $self = shift;
-	my $args = ( $self->{makemaker_args} ||= {} );
-	%$args = ( %$args, @_ );
-	return $args;
-}
-
-# For mm args that take multiple space-seperated args,
-# append an argument to the current list.
-sub makemaker_append {
-	my $self = sShift;
-	my $name = shift;
-	my $args = $self->makemaker_args;
-	$args->{name} = defined $args->{$name}
-		? join( ' ', $args->{name}, @_ )
-		: join( ' ', @_ );
-}
-
-sub build_subdirs {
-	my $self    = shift;
-	my $subdirs = $self->makemaker_args->{DIR} ||= [];
-	for my $subdir (@_) {
-		push @$subdirs, $subdir;
-	}
-}
-
-sub clean_files {
-	my $self  = shift;
-	my $clean = $self->makemaker_args->{clean} ||= {};
-	  %$clean = (
-		%$clean,
-		FILES => join ' ', grep { length $_ } ($clean->{FILES} || (), @_),
-	);
-}
-
-sub realclean_files {
-	my $self      = shift;
-	my $realclean = $self->makemaker_args->{realclean} ||= {};
-	  %$realclean = (
-		%$realclean,
-		FILES => join ' ', grep { length $_ } ($realclean->{FILES} || (), @_),
-	);
-}
-
-sub libs {
-	my $self = shift;
-	my $libs = ref $_[0] ? shift : [ shift ];
-	$self->makemaker_args( LIBS => $libs );
-}
-
-sub inc {
-	my $self = shift;
-	$self->makemaker_args( INC => shift );
-}
-
-my %test_dir = ();
-
-sub _wanted_t {
-	/\.t$/ and -f $_ and $test_dir{$File::Find::dir} = 1;
-}
-
-sub tests_recursive {
-	my $self = shift;
-	if ( $self->tests ) {
-		die "tests_recursive will not work if tests are already defined";
-	}
-	my $dir = shift || 't';
-	unless ( -d $dir ) {
-		die "tests_recursive dir '$dir' does not exist";
-	}
-	%test_dir = ();
-	require File::Find;
-	File::Find::find( \&_wanted_t, $dir );
-	$self->tests( join ' ', map { "$_/*.t" } sort keys %test_dir );
-}
-
-sub write {
-	my $self = shift;
-	die "&Makefile->write() takes no arguments\n" if @_;
-
-	# Check the current Perl version
-	my $perl_version = $self->perl_version;
-	if ( $perl_version ) {
-		eval "use $perl_version; 1"
-			or die "ERROR: perl: Version $] is installed, "
-			. "but we need version >= $perl_version";
-	}
-
-	# Make sure we have a new enough MakeMaker
-	require ExtUtils::MakeMaker;
-
-	if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) {
-		# MakeMaker can complain about module versions that include
-		# an underscore, even though its own version may contain one!
-		# Hence the funny regexp to get rid of it.  See RT #35800
-		# for details.
-		$self->build_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/ );
-		$self->configure_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/ );
-	} else {
-		# Allow legacy-compatibility with 5.005 by depending on the
-		# most recent EU:MM that supported 5.005.
-		$self->build_requires( 'ExtUtils::MakeMaker' => 6.42 );
-		$self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 );
-	}
-
-	# Generate the MakeMaker params
-	my $args = $self->makemaker_args;
-	$args->{DISTNAME} = $self->name;
-	$args->{NAME}     = $self->module_name || $self->name;
-	$args->{VERSION}  = $self->version;
-	$args->{NAME}     =~ s/-/::/g;
-	if ( $self->tests ) {
-		$args->{test} = { TESTS => $self->tests };
-	}
-	if ( $] >= 5.005 ) {
-		$args->{ABSTRACT} = $self->abstract;
-		$args->{AUTHOR}   = $self->author;
-	}
-	if ( eval($ExtUtils::MakeMaker::VERSION) >= 6.10 ) {
-		$args->{NO_META} = 1;
-	}
-	if ( eval($ExtUtils::MakeMaker::VERSION) > 6.17 and $self->sign ) {
-		$args->{SIGN} = 1;
-	}
-	unless ( $self->is_admin ) {
-		delete $args->{SIGN};
-	}
-
-	# Merge both kinds of requires into prereq_pm
-	my $prereq = ($args->{PREREQ_PM} ||= {});
-	%$prereq = ( %$prereq,
-		map { @$_ }
-		map { @$_ }
-		grep $_,
-		($self->configure_requires, $self->build_requires, $self->requires)
-	);
-
-	# Remove any reference to perl, PREREQ_PM doesn't support it
-	delete $args->{PREREQ_PM}->{perl};
-
-	# merge both kinds of requires into prereq_pm
-	my $subdirs = ($args->{DIR} ||= []);
-	if ($self->bundles) {
-		foreach my $bundle (@{ $self->bundles }) {
-			my ($file, $dir) = @$bundle;
-			push @$subdirs, $dir if -d $dir;
-			delete $prereq->{$file};
-		}
-	}
-
-	if ( my $perl_version = $self->perl_version ) {
-		eval "use $perl_version; 1"
-			or die "ERROR: perl: Version $] is installed, "
-			. "but we need version >= $perl_version";
-	}
-
-	$args->{INSTALLDIRS} = $self->installdirs;
-
-	my %args = map { ( $_ => $args->{$_} ) } grep {defined($args->{$_})} keys %$args;
-
-	my $user_preop = delete $args{dist}->{PREOP};
-	if (my $preop = $self->admin->preop($user_preop)) {
-		foreach my $key ( keys %$preop ) {
-			$args{dist}->{$key} = $preop->{$key};
-		}
-	}
-
-	my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);
-	$self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile');
-}
-
-sub fix_up_makefile {
-	my $self          = shift;
-	my $makefile_name = shift;
-	my $top_class     = ref($self->_top) || '';
-	my $top_version   = $self->_top->VERSION || '';
-
-	my $preamble = $self->preamble
-		? "# Preamble by $top_class $top_version\n"
-			. $self->preamble
-		: '';
-	my $postamble = "# Postamble by $top_class $top_version\n"
-		. ($self->postamble || '');
-
-	local *MAKEFILE;
-	open MAKEFILE, "< $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!";
-	my $makefile = do { local $/; <MAKEFILE> };
-	close MAKEFILE or die $!;
-
-	$makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /;
-	$makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g;
-	$makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g;
-	$makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m;
-	$makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m;
-
-	# Module::Install will never be used to build the Core Perl
-	# Sometimes PERL_LIB and PERL_ARCHLIB get written anyway, which breaks
-	# PREFIX/PERL5LIB, and thus, install_share. Blank them if they exist
-	$makefile =~ s/^PERL_LIB = .+/PERL_LIB =/m;
-	#$makefile =~ s/^PERL_ARCHLIB = .+/PERL_ARCHLIB =/m;
-
-	# Perl 5.005 mentions PERL_LIB explicitly, so we have to remove that as well.
-	$makefile =~ s/(\"?)-I\$\(PERL_LIB\)\1//g;
-
-	# XXX - This is currently unused; not sure if it breaks other MM-users
-	# $makefile =~ s/^pm_to_blib\s+:\s+/pm_to_blib :: /mg;
-
-	open  MAKEFILE, "> $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!";
-	print MAKEFILE  "$preamble$makefile$postamble" or die $!;
-	close MAKEFILE  or die $!;
-
-	1;
-}
-
-sub preamble {
-	my ($self, $text) = @_;
-	$self->{preamble} = $text . $self->{preamble} if defined $text;
-	$self->{preamble};
-}
-
-sub postamble {
-	my ($self, $text) = @_;
-	$self->{postamble} ||= $self->admin->postamble;
-	$self->{postamble} .= $text if defined $text;
-	$self->{postamble}
-}
-
-1;
-
-__END__
-
-#line 394
diff -pruN 1.110-1.3/inc/Module/Install/Metadata.pm 1.112-1/inc/Module/Install/Metadata.pm
--- 1.110-1.3/inc/Module/Install/Metadata.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/Metadata.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,580 +0,0 @@
-#line 1
-package Module::Install::Metadata;
-
-use strict 'vars';
-use Module::Install::Base;
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '0.83';
-	@ISA     = qw{Module::Install::Base};
-	$ISCORE  = 1;
-}
-
-my @boolean_keys = qw{
-	sign
-	mymeta
-};
-
-my @scalar_keys = qw{
-	name
-	module_name
-	abstract
-	author
-	version
-	distribution_type
-	tests
-	installdirs
-};
-
-my @tuple_keys = qw{
-	configure_requires
-	build_requires
-	requires
-	recommends
-	bundles
-	resources
-};
-
-my @resource_keys = qw{
-	homepage
-	bugtracker
-	repository
-};
-
-my @array_keys = qw{
-	keywords
-};
-
-sub Meta              { shift          }
-sub Meta_BooleanKeys  { @boolean_keys  }
-sub Meta_ScalarKeys   { @scalar_keys   }
-sub Meta_TupleKeys    { @tuple_keys    }
-sub Meta_ResourceKeys { @resource_keys }
-sub Meta_ArrayKeys    { @array_keys    }
-
-foreach my $key ( @boolean_keys ) {
-	*$key = sub {
-		my $self = shift;
-		if ( defined wantarray and not @_ ) {
-			return $self->{values}->{$key};
-		}
-		$self->{values}->{$key} = ( @_ ? $_[0] : 1 );
-		return $self;
-	};
-}
-
-foreach my $key ( @scalar_keys ) {
-	*$key = sub {
-		my $self = shift;
-		return $self->{values}->{$key} if defined wantarray and !@_;
-		$self->{values}->{$key} = shift;
-		return $self;
-	};
-}
-
-foreach my $key ( @array_keys ) {
-	*$key = sub {
-		my $self = shift;
-		return $self->{values}->{$key} if defined wantarray and !@_;
-		$self->{values}->{$key} ||= [];
-		push @{$self->{values}->{$key}}, @_;
-		return $self;
-	};
-}
-
-foreach my $key ( @resource_keys ) {
-	*$key = sub {
-		my $self = shift;
-		unless ( @_ ) {
-			return () unless $self->{values}->{resources};
-			return map  { $_->[1] }
-			       grep { $_->[0] eq $key }
-			       @{ $self->{values}->{resources} };
-		}
-		return $self->{values}->{resources}->{$key} unless @_;
-		my $uri = shift or die(
-			"Did not provide a value to $key()"
-		);
-		$self->resources( $key => $uri );
-		return 1;
-	};
-}
-
-foreach my $key ( grep { $_ ne "resources" } @tuple_keys) {
-	*$key = sub {
-		my $self = shift;
-		return $self->{values}->{$key} unless @_;
-		my @added;
-		while ( @_ ) {
-			my $module  = shift or last;
-			my $version = shift || 0;
-			push @added, [ $module, $version ];
-		}
-		push @{ $self->{values}->{$key} }, @added;
-		return map {@$_} @added;
-	};
-}
-
-# Resource handling
-my %lc_resource = map { $_ => 1 } qw{
-	homepage
-	license
-	bugtracker
-	repository
-};
-
-sub resources {
-	my $self = shift;
-	while ( @_ ) {
-		my $name  = shift or last;
-		my $value = shift or next;
-		if ( $name eq lc $name and ! $lc_resource{$name} ) {
-			die("Unsupported reserved lowercase resource '$name'");
-		}
-		$self->{values}->{resources} ||= [];
-		push @{ $self->{values}->{resources} }, [ $name, $value ];
-	}
-	$self->{values}->{resources};
-}
-
-# Aliases for build_requires that will have alternative
-# meanings in some future version of META.yml.
-sub test_requires     { shift->build_requires(@_) }
-sub install_requires  { shift->build_requires(@_) }
-
-# Aliases for installdirs options
-sub install_as_core   { $_[0]->installdirs('perl')   }
-sub install_as_cpan   { $_[0]->installdirs('site')   }
-sub install_as_site   { $_[0]->installdirs('site')   }
-sub install_as_vendor { $_[0]->installdirs('vendor') }
-
-sub dynamic_config {
-	my $self = shift;
-	unless ( @_ ) {
-		warn "You MUST provide an explicit true/false value to dynamic_config\n";
-		return $self;
-	}
-	$self->{values}->{dynamic_config} = $_[0] ? 1 : 0;
-	return 1;
-}
-
-sub perl_version {
-	my $self = shift;
-	return $self->{values}->{perl_version} unless @_;
-	my $version = shift or die(
-		"Did not provide a value to perl_version()"
-	);
-
-	# Normalize the version
-	$version = $self->_perl_version($version);
-
-	# We don't support the reall old versions
-	unless ( $version >= 5.005 ) {
-		die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n";
-	}
-
-	$self->{values}->{perl_version} = $version;
-}
-
-#Stolen from M::B
-my %license_urls = (
-    perl         => 'http://dev.perl.org/licenses/',
-    apache       => 'http://apache.org/licenses/LICENSE-2.0',
-    artistic     => 'http://opensource.org/licenses/artistic-license.php',
-    artistic_2   => 'http://opensource.org/licenses/artistic-license-2.0.php',
-    lgpl         => 'http://opensource.org/licenses/lgpl-license.php',
-    lgpl2        => 'http://opensource.org/licenses/lgpl-2.1.php',
-    lgpl3        => 'http://opensource.org/licenses/lgpl-3.0.html',
-    bsd          => 'http://opensource.org/licenses/bsd-license.php',
-    gpl          => 'http://opensource.org/licenses/gpl-license.php',
-    gpl2         => 'http://opensource.org/licenses/gpl-2.0.php',
-    gpl3         => 'http://opensource.org/licenses/gpl-3.0.html',
-    mit          => 'http://opensource.org/licenses/mit-license.php',
-    mozilla      => 'http://opensource.org/licenses/mozilla1.1.php',
-    open_source  => undef,
-    unrestricted => undef,
-    restrictive  => undef,
-    unknown      => undef,
-);
-
-sub license {
-	my $self = shift;
-	return $self->{values}->{license} unless @_;
-	my $license = shift or die(
-		'Did not provide a value to license()'
-	);
-	$self->{values}->{license} = $license;
-
-	# Automatically fill in license URLs
-	if ( $license_urls{$license} ) {
-		$self->resources( license => $license_urls{$license} );
-	}
-
-	return 1;
-}
-
-sub all_from {
-	my ( $self, $file ) = @_;
-
-	unless ( defined($file) ) {
-		my $name = $self->name or die(
-			"all_from called with no args without setting name() first"
-		);
-		$file = join('/', 'lib', split(/-/, $name)) . '.pm';
-		$file =~ s{.*/}{} unless -e $file;
-		unless ( -e $file ) {
-			die("all_from cannot find $file from $name");
-		}
-	}
-	unless ( -f $file ) {
-		die("The path '$file' does not exist, or is not a file");
-	}
-
-	# Some methods pull from POD instead of code.
-	# If there is a matching .pod, use that instead
-	my $pod = $file;
-	$pod =~ s/\.pm$/.pod/i;
-	$pod = $file unless -e $pod;
-
-	# Pull the different values
-	$self->name_from($file)         unless $self->name;
-	$self->version_from($file)      unless $self->version;
-	$self->perl_version_from($file) unless $self->perl_version;
-	$self->author_from($pod)        unless $self->author;
-	$self->license_from($pod)       unless $self->license;
-	$self->abstract_from($pod)      unless $self->abstract;
-
-	return 1;
-}
-
-sub provides {
-	my $self     = shift;
-	my $provides = ( $self->{values}->{provides} ||= {} );
-	%$provides = (%$provides, @_) if @_;
-	return $provides;
-}
-
-sub auto_provides {
-	my $self = shift;
-	return $self unless $self->is_admin;
-	unless (-e 'MANIFEST') {
-		warn "Cannot deduce auto_provides without a MANIFEST, skipping\n";
-		return $self;
-	}
-	# Avoid spurious warnings as we are not checking manifest here.
-	local $SIG{__WARN__} = sub {1};
-	require ExtUtils::Manifest;
-	local *ExtUtils::Manifest::manicheck = sub { return };
-
-	require Module::Build;
-	my $build = Module::Build->new(
-		dist_name    => $self->name,
-		dist_version => $self->version,
-		license      => $self->license,
-	);
-	$self->provides( %{ $build->find_dist_packages || {} } );
-}
-
-sub feature {
-	my $self     = shift;
-	my $name     = shift;
-	my $features = ( $self->{values}->{features} ||= [] );
-	my $mods;
-
-	if ( @_ == 1 and ref( $_[0] ) ) {
-		# The user used ->feature like ->features by passing in the second
-		# argument as a reference.  Accomodate for that.
-		$mods = $_[0];
-	} else {
-		$mods = \@_;
-	}
-
-	my $count = 0;
-	push @$features, (
-		$name => [
-			map {
-				ref($_) ? ( ref($_) eq 'HASH' ) ? %$_ : @$_ : $_
-			} @$mods
-		]
-	);
-
-	return @$features;
-}
-
-sub features {
-	my $self = shift;
-	while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) {
-		$self->feature( $name, @$mods );
-	}
-	return $self->{values}->{features}
-		? @{ $self->{values}->{features} }
-		: ();
-}
-
-sub no_index {
-	my $self = shift;
-	my $type = shift;
-	push @{ $self->{values}->{no_index}->{$type} }, @_ if $type;
-	return $self->{values}->{no_index};
-}
-
-sub read {
-	my $self = shift;
-	$self->include_deps( 'YAML::Tiny', 0 );
-
-	require YAML::Tiny;
-	my $data = YAML::Tiny::LoadFile('META.yml');
-
-	# Call methods explicitly in case user has already set some values.
-	while ( my ( $key, $value ) = each %$data ) {
-		next unless $self->can($key);
-		if ( ref $value eq 'HASH' ) {
-			while ( my ( $module, $version ) = each %$value ) {
-				$self->can($key)->($self, $module => $version );
-			}
-		} else {
-			$self->can($key)->($self, $value);
-		}
-	}
-	return $self;
-}
-
-sub write {
-	my $self = shift;
-	return $self unless $self->is_admin;
-	$self->admin->write_meta;
-	return $self;
-}
-
-sub version_from {
-	require ExtUtils::MM_Unix;
-	my ( $self, $file ) = @_;
-	$self->version( ExtUtils::MM_Unix->parse_version($file) );
-}
-
-sub abstract_from {
-	require ExtUtils::MM_Unix;
-	my ( $self, $file ) = @_;
-	$self->abstract(
-		bless(
-			{ DISTNAME => $self->name },
-			'ExtUtils::MM_Unix'
-		)->parse_abstract($file)
-	 );
-}
-
-# Add both distribution and module name
-sub name_from {
-	my ($self, $file) = @_;
-	if (
-		Module::Install::_read($file) =~ m/
-		^ \s*
-		package \s*
-		([\w:]+)
-		\s* ;
-		/ixms
-	) {
-		my ($name, $module_name) = ($1, $1);
-		$name =~ s{::}{-}g;
-		$self->name($name);
-		unless ( $self->module_name ) {
-			$self->module_name($module_name);
-		}
-	} else {
-		die("Cannot determine name from $file\n");
-	}
-}
-
-sub perl_version_from {
-	my $self = shift;
-	if (
-		Module::Install::_read($_[0]) =~ m/
-		^
-		(?:use|require) \s*
-		v?
-		([\d_\.]+)
-		\s* ;
-		/ixms
-	) {
-		my $perl_version = $1;
-		$perl_version =~ s{_}{}g;
-		$self->perl_version($perl_version);
-	} else {
-		warn "Cannot determine perl version info from $_[0]\n";
-		return;
-	}
-}
-
-sub author_from {
-	my $self    = shift;
-	my $content = Module::Install::_read($_[0]);
-	if ($content =~ m/
-		=head \d \s+ (?:authors?)\b \s*
-		([^\n]*)
-		|
-		=head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s*
-		.*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s*
-		([^\n]*)
-	/ixms) {
-		my $author = $1 || $2;
-		$author =~ s{E<lt>}{<}g;
-		$author =~ s{E<gt>}{>}g;
-		$self->author($author);
-	} else {
-		warn "Cannot determine author info from $_[0]\n";
-	}
-}
-
-sub license_from {
-	my $self = shift;
-	if (
-		Module::Install::_read($_[0]) =~ m/
-		(
-			=head \d \s+
-			(?:licen[cs]e|licensing|copyright|legal)\b
-			.*?
-		)
-		(=head\\d.*|=cut.*|)
-		\z
-	/ixms ) {
-		my $license_text = $1;
-		my @phrases      = (
-			'under the same (?:terms|license) as perl itself' => 'perl',        1,
-			'GNU general public license'                      => 'gpl',         1,
-			'GNU public license'                              => 'gpl',         1,
-			'GNU lesser general public license'               => 'lgpl',        1,
-			'GNU lesser public license'                       => 'lgpl',        1,
-			'GNU library general public license'              => 'lgpl',        1,
-			'GNU library public license'                      => 'lgpl',        1,
-			'BSD license'                                     => 'bsd',         1,
-			'Artistic license'                                => 'artistic',    1,
-			'GPL'                                             => 'gpl',         1,
-			'LGPL'                                            => 'lgpl',        1,
-			'BSD'                                             => 'bsd',         1,
-			'Artistic'                                        => 'artistic',    1,
-			'MIT'                                             => 'mit',         1,
-			'proprietary'                                     => 'proprietary', 0,
-		);
-		while ( my ($pattern, $license, $osi) = splice(@phrases, 0, 3) ) {
-			$pattern =~ s{\s+}{\\s+}g;
-			if ( $license_text =~ /\b$pattern\b/i ) {
-				$self->license($license);
-				return 1;
-			}
-		}
-	}
-
-	warn "Cannot determine license info from $_[0]\n";
-	return 'unknown';
-}
-
-sub _extract_bugtracker {
-	my @links   = $_[0] =~ m#L<(\Qhttp://rt.cpan.org/\E[^>]+)>#g;
-	my %links;
-	@links{@links}=();
-	@links=keys %links;
-	return @links;
-}
-
-sub bugtracker_from {
-	my $self    = shift;
-	my $content = Module::Install::_read($_[0]);
-	my @links   = _extract_bugtracker($content);
-	unless ( @links ) {
-		warn "Cannot determine bugtracker info from $_[0]\n";
-		return 0;
-	}
-	if ( @links > 1 ) {
-		warn "Found more than on rt.cpan.org link in $_[0]\n";
-		return 0;
-	}
-
-	# Set the bugtracker
-	bugtracker( $links[0] );
-	return 1;
-}
-
-sub requires_from {
-	my $self     = shift;
-	my $content  = Module::Install::_readperl($_[0]);
-	my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg;
-	while ( @requires ) {
-		my $module  = shift @requires;
-		my $version = shift @requires;
-		$self->requires( $module => $version );
-	}
-}
-
-# Convert triple-part versions (eg, 5.6.1 or 5.8.9) to
-# numbers (eg, 5.006001 or 5.008009).
-# Also, convert double-part versions (eg, 5.8)
-sub _perl_version {
-	my $v = $_[-1];
-	$v =~ s/^([1-9])\.([1-9]\d?\d?)$/sprintf("%d.%03d",$1,$2)/e;	
-	$v =~ s/^([1-9])\.([1-9]\d?\d?)\.(0|[1-9]\d?\d?)$/sprintf("%d.%03d%03d",$1,$2,$3 || 0)/e;
-	$v =~ s/(\.\d\d\d)000$/$1/;
-	$v =~ s/_.+$//;
-	if ( ref($v) ) {
-		$v = $v + 0; # Numify
-	}
-	return $v;
-}
-
-
-
-
-
-######################################################################
-# MYMETA.yml Support
-
-sub WriteMyMeta {
-	die "WriteMyMeta has been deprecated";
-}
-
-sub write_mymeta {
-	my $self = shift;
-	
-	# If there's no existing META.yml there is nothing we can do
-	return unless -f 'META.yml';
-
-	# We need YAML::Tiny to write the MYMETA.yml file
-	unless ( eval { require YAML::Tiny; 1; } ) {
-		return 1;
-	}
-
-	# Merge the perl version into the dependencies
-	my $val  = $self->Meta->{values};
-	my $perl = delete $val->{perl_version};
-	if ( $perl ) {
-		$val->{requires} ||= [];
-		my $requires = $val->{requires};
-
-		# Canonize to three-dot version after Perl 5.6
-		if ( $perl >= 5.006 ) {
-			$perl =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2||0), int($3||0))}e
-		}
-		unshift @$requires, [ perl => $perl ];
-	}
-
-	# Load the advisory META.yml file
-	my @yaml = YAML::Tiny::LoadFile('META.yml');
-	my $meta = $yaml[0];
-
-	# Overwrite the non-configure dependency hashs
-	delete $meta->{requires};
-	delete $meta->{build_requires};
-	delete $meta->{recommends};
-	if ( exists $val->{requires} ) {
-		$meta->{requires} = { map { @$_ } @{ $val->{requires} } };
-	}
-	if ( exists $val->{build_requires} ) {
-		$meta->{build_requires} = { map { @$_ } @{ $val->{build_requires} } };
-	}
-
-	# Save as the MYMETA.yml file
-	print "Writing MYMETA.yml\n";
-	YAML::Tiny::DumpFile('MYMETA.yml', $meta);	
-}
-
-1;
diff -pruN 1.110-1.3/inc/Module/Install/Win32.pm 1.112-1/inc/Module/Install/Win32.pm
--- 1.110-1.3/inc/Module/Install/Win32.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/Win32.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@
-#line 1
-package Module::Install::Win32;
-
-use strict;
-use Module::Install::Base;
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '0.83';
-	@ISA     = qw{Module::Install::Base};
-	$ISCORE  = 1;
-}
-
-# determine if the user needs nmake, and download it if needed
-sub check_nmake {
-	my $self = shift;
-	$self->load('can_run');
-	$self->load('get_file');
-
-	require Config;
-	return unless (
-		$^O eq 'MSWin32'                     and
-		$Config::Config{make}                and
-		$Config::Config{make} =~ /^nmake\b/i and
-		! $self->can_run('nmake')
-	);
-
-	print "The required 'nmake' executable not found, fetching it...\n";
-
-	require File::Basename;
-	my $rv = $self->get_file(
-		url       => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
-		ftp_url   => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
-		local_dir => File::Basename::dirname($^X),
-		size      => 51928,
-		run       => 'Nmake15.exe /o > nul',
-		check_for => 'Nmake.exe',
-		remove    => 1,
-	);
-
-	die <<'END_MESSAGE' unless $rv;
-
--------------------------------------------------------------------------------
-
-Since you are using Microsoft Windows, you will need the 'nmake' utility
-before installation. It's available at:
-
-  http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe
-      or
-  ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe
-
-Please download the file manually, save it to a directory in %PATH% (e.g.
-C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to
-that directory, and run "Nmake15.exe" from there; that will create the
-'nmake.exe' file needed by this module.
-
-You may then resume the installation process described in README.
-
--------------------------------------------------------------------------------
-END_MESSAGE
-
-}
-
-1;
diff -pruN 1.110-1.3/inc/Module/Install/WriteAll.pm 1.112-1/inc/Module/Install/WriteAll.pm
--- 1.110-1.3/inc/Module/Install/WriteAll.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install/WriteAll.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,50 +0,0 @@
-#line 1
-package Module::Install::WriteAll;
-
-use strict;
-use Module::Install::Base;
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '0.83';
-	@ISA     = qw{Module::Install::Base};
-	$ISCORE  = 1;
-}
-
-sub WriteAll {
-	my $self = shift;
-	my %args = (
-		meta        => 1,
-		sign        => 0,
-		inline      => 0,
-		check_nmake => 1,
-		@_,
-	);
-
-	$self->sign(1)                if $args{sign};
-	$self->admin->WriteAll(%args) if $self->is_admin;
-
-	$self->check_nmake if $args{check_nmake};
-	unless ( $self->makemaker_args->{PL_FILES} ) {
-		$self->makemaker_args( PL_FILES => {} );
-	}
-
-	# Until ExtUtils::MakeMaker support MYMETA.yml, make sure
-	# we clean it up properly ourself.
-	$self->realclean_files('MYMETA.yml');
-
-	if ( $args{inline} ) {
-		$self->Inline->write;
-	} else {
-		$self->Makefile->write;
-	}
-
-	# The Makefile write process adds a couple of dependencies,
-	# so write the META.yml files after the Makefile.
-	$self->Meta->write        if $args{meta};
-	$self->Meta->write_mymeta if $self->mymeta;
-
-	return 1;
-}
-
-1;
diff -pruN 1.110-1.3/inc/Module/Install.pm 1.112-1/inc/Module/Install.pm
--- 1.110-1.3/inc/Module/Install.pm	2009-04-14 09:16:06.000000000 +0000
+++ 1.112-1/inc/Module/Install.pm	1970-01-01 00:00:00.000000000 +0000
@@ -1,430 +0,0 @@
-#line 1
-package Module::Install;
-
-# For any maintainers:
-# The load order for Module::Install is a bit magic.
-# It goes something like this...
-#
-# IF ( host has Module::Install installed, creating author mode ) {
-#     1. Makefile.PL calls "use inc::Module::Install"
-#     2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install
-#     3. The installed version of inc::Module::Install loads
-#     4. inc::Module::Install calls "require Module::Install"
-#     5. The ./inc/ version of Module::Install loads
-# } ELSE {
-#     1. Makefile.PL calls "use inc::Module::Install"
-#     2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install
-#     3. The ./inc/ version of Module::Install loads
-# }
-
-use 5.005;
-use strict 'vars';
-
-use vars qw{$VERSION $MAIN};
-BEGIN {
-	# All Module::Install core packages now require synchronised versions.
-	# This will be used to ensure we don't accidentally load old or
-	# different versions of modules.
-	# This is not enforced yet, but will be some time in the next few
-	# releases once we can make sure it won't clash with custom
-	# Module::Install extensions.
-	$VERSION = '0.83';
-
-	# Storage for the pseudo-singleton
-	$MAIN    = undef;
-
-	*inc::Module::Install::VERSION = *VERSION;
-	@inc::Module::Install::ISA     = __PACKAGE__;
-
-}
-
-
-
-
-
-# Whether or not inc::Module::Install is actually loaded, the
-# $INC{inc/Module/Install.pm} is what will still get set as long as
-# the caller loaded module this in the documented manner.
-# If not set, the caller may NOT have loaded the bundled version, and thus
-# they may not have a MI version that works with the Makefile.PL. This would
-# result in false errors or unexpected behaviour. And we don't want that.
-my $file = join( '/', 'inc', split /::/, __PACKAGE__ ) . '.pm';
-unless ( $INC{$file} ) { die <<"END_DIE" }
-
-Please invoke ${\__PACKAGE__} with:
-
-	use inc::${\__PACKAGE__};
-
-not:
-
-	use ${\__PACKAGE__};
-
-END_DIE
-
-
-
-
-
-# If the script that is loading Module::Install is from the future,
-# then make will detect this and cause it to re-run over and over
-# again. This is bad. Rather than taking action to touch it (which
-# is unreliable on some platforms and requires write permissions)
-# for now we should catch this and refuse to run.
-if ( -f $0 ) {
-	my $s = (stat($0))[9];
-
-	# If the modification time is only slightly in the future,
-	# sleep briefly to remove the problem.
-	my $a = $s - time;
-	if ( $a > 0 and $a < 5 ) { sleep 5 }
-
-	# Too far in the future, throw an error.
-	my $t = time;
-	if ( $s > $t ) { die <<"END_DIE" }
-
-Your installer $0 has a modification time in the future ($s > $t).
-
-This is known to create infinite loops in make.
-
-Please correct this, then run $0 again.
-
-END_DIE
-}
-
-
-
-
-
-# Build.PL was formerly supported, but no longer is due to excessive
-# difficulty in implementing every single feature twice.
-if ( $0 =~ /Build.PL$/i ) { die <<"END_DIE" }
-
-Module::Install no longer supports Build.PL.
-
-It was impossible to maintain duel backends, and has been deprecated.
-
-Please remove all Build.PL files and only use the Makefile.PL installer.
-
-END_DIE
-
-
-
-
-
-# To save some more typing in Module::Install installers, every...
-# use inc::Module::Install
-# ...also acts as an implicit use strict.
-$^H |= strict::bits(qw(refs subs vars));
-
-
-
-
-
-use Cwd        ();
-use File::Find ();
-use File::Path ();
-use FindBin;
-
-sub autoload {
-	my $self = shift;
-	my $who  = $self->_caller;
-	my $cwd  = Cwd::cwd();
-	my $sym  = "${who}::AUTOLOAD";
-	$sym->{$cwd} = sub {
-		my $pwd = Cwd::cwd();
-		if ( my $code = $sym->{$pwd} ) {
-			# Delegate back to parent dirs
-			goto &$code unless $cwd eq $pwd;
-		}
-		$$sym =~ /([^:]+)$/ or die "Cannot autoload $who - $sym";
-		my $method = $1;
-		if ( uc($method) eq $method ) {
-			# Do nothing
-			return;
-		} elsif ( $method =~ /^_/ and $self->can($method) ) {
-			# Dispatch to the root M:I class
-			return $self->$method(@_);
-		}
-
-		# Dispatch to the appropriate plugin
-		unshift @_, ( $self, $1 );
-		goto &{$self->can('call')};
-	};
-}
-
-sub import {
-	my $class = shift;
-	my $self  = $class->new(@_);
-	my $who   = $self->_caller;
-
-	unless ( -f $self->{file} ) {
-		require "$self->{path}/$self->{dispatch}.pm";
-		File::Path::mkpath("$self->{prefix}/$self->{author}");
-		$self->{admin} = "$self->{name}::$self->{dispatch}"->new( _top => $self );
-		$self->{admin}->init;
-		@_ = ($class, _self => $self);
-		goto &{"$self->{name}::import"};
-	}
-
-	*{"${who}::AUTOLOAD"} = $self->autoload;
-	$self->preload;
-
-	# Unregister loader and worker packages so subdirs can use them again
-	delete $INC{"$self->{file}"};
-	delete $INC{"$self->{path}.pm"};
-
-	# Save to the singleton
-	$MAIN = $self;
-
-	return 1;
-}
-
-sub preload {
-	my $self = shift;
-	unless ( $self->{extensions} ) {
-		$self->load_extensions(
-			"$self->{prefix}/$self->{path}", $self
-		);
-	}
-
-	my @exts = @{$self->{extensions}};
-	unless ( @exts ) {
-		@exts = $self->{admin}->load_all_extensions;
-	}
-
-	my %seen;
-	foreach my $obj ( @exts ) {
-		while (my ($method, $glob) = each %{ref($obj) . '::'}) {
-			next unless $obj->can($method);
-			next if $method =~ /^_/;
-			next if $method eq uc($method);
-			$seen{$method}++;
-		}
-	}
-
-	my $who = $self->_caller;
-	foreach my $name ( sort keys %seen ) {
-		*{"${who}::$name"} = sub {
-			${"${who}::AUTOLOAD"} = "${who}::$name";
-			goto &{"${who}::AUTOLOAD"};
-		};
-	}
-}
-
-sub new {
-	my ($class, %args) = @_;
-
-	# ignore the prefix on extension modules built from top level.
-	my $base_path = Cwd::abs_path($FindBin::Bin);
-	unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) {
-		delete $args{prefix};
-	}
-
-	return $args{_self} if $args{_self};
-
-	$args{dispatch} ||= 'Admin';
-	$args{prefix}   ||= 'inc';
-	$args{author}   ||= ($^O eq 'VMS' ? '_author' : '.author');
-	$args{bundle}   ||= 'inc/BUNDLES';
-	$args{base}     ||= $base_path;
-	$class =~ s/^\Q$args{prefix}\E:://;
-	$args{name}     ||= $class;
-	$args{version}  ||= $class->VERSION;
-	unless ( $args{path} ) {
-		$args{path}  = $args{name};
-		$args{path}  =~ s!::!/!g;
-	}
-	$args{file}     ||= "$args{base}/$args{prefix}/$args{path}.pm";
-	$args{wrote}      = 0;
-
-	bless( \%args, $class );
-}
-
-sub call {
-	my ($self, $method) = @_;
-	my $obj = $self->load($method) or return;
-        splice(@_, 0, 2, $obj);
-	goto &{$obj->can($method)};
-}
-
-sub load {
-	my ($self, $method) = @_;
-
-	$self->load_extensions(
-		"$self->{prefix}/$self->{path}", $self
-	) unless $self->{extensions};
-
-	foreach my $obj (@{$self->{extensions}}) {
-		return $obj if $obj->can($method);
-	}
-
-	my $admin = $self->{admin} or die <<"END_DIE";
-The '$method' method does not exist in the '$self->{prefix}' path!
-Please remove the '$self->{prefix}' directory and run $0 again to load it.
-END_DIE
-
-	my $obj = $admin->load($method, 1);
-	push @{$self->{extensions}}, $obj;
-
-	$obj;
-}
-
-sub load_extensions {
-	my ($self, $path, $top) = @_;
-
-	unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) {
-		unshift @INC, $self->{prefix};
-	}
-
-	foreach my $rv ( $self->find_extensions($path) ) {
-		my ($file, $pkg) = @{$rv};
-		next if $self->{pathnames}{$pkg};
-
-		local $@;
-		my $new = eval { require $file; $pkg->can('new') };
-		unless ( $new ) {
-			warn $@ if $@;
-			next;
-		}
-		$self->{pathnames}{$pkg} = delete $INC{$file};
-		push @{$self->{extensions}}, &{$new}($pkg, _top => $top );
-	}
-
-	$self->{extensions} ||= [];
-}
-
-sub find_extensions {
-	my ($self, $path) = @_;
-
-	my @found;
-	File::Find::find( sub {
-		my $file = $File::Find::name;
-		return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;
-		my $subpath = $1;
-		return if lc($subpath) eq lc($self->{dispatch});
-
-		$file = "$self->{path}/$subpath.pm";
-		my $pkg = "$self->{name}::$subpath";
-		$pkg =~ s!/!::!g;
-
-		# If we have a mixed-case package name, assume case has been preserved
-		# correctly.  Otherwise, root through the file to locate the case-preserved
-		# version of the package name.
-		if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
-			my $content = Module::Install::_read($subpath . '.pm');
-			my $in_pod  = 0;
-			foreach ( split //, $content ) {
-				$in_pod = 1 if /^=\w/;
-				$in_pod = 0 if /^=cut/;
-				next if ($in_pod || /^=cut/);  # skip pod text
-				next if /^\s*#/;               # and comments
-				if ( m/^\s*package\s+($pkg)\s*;/i ) {
-					$pkg = $1;
-					last;
-				}
-			}
-		}
-
-		push @found, [ $file, $pkg ];
-	}, $path ) if -d $path;
-
-	@found;
-}
-
-
-
-
-
-#####################################################################
-# Common Utility Functions
-
-sub _caller {
-	my $depth = 0;
-	my $call  = caller($depth);
-	while ( $call eq __PACKAGE__ ) {
-		$depth++;
-		$call = caller($depth);
-	}
-	return $call;
-}
-
-sub _read {
-	local *FH;
-	if ( $] >= 5.006 ) {
-		open( FH, '<', $_[0] ) or die "open($_[0]): $!";
-	} else {
-		open( FH, "< $_[0]"  ) or die "open($_[0]): $!";	
-	}
-	my $string = do { local $/; <FH> };
-	close FH or die "close($_[0]): $!";
-	return $string;
-}
-
-sub _readperl {
-	my $string = Module::Install::_read($_[0]);
-	$string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
-	$string =~ s/(\n)\n*__(?:DATA|END)__\b.*\z/$1/s;
-	$string =~ s/\n\n=\w+.+?\n\n=cut\b.+?\n+/\n\n/sg;
-	return $string;
-}
-
-sub _readpod {
-	my $string = Module::Install::_read($_[0]);
-	$string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
-	return $string if $_[0] =~ /\.pod\z/;
-	$string =~ s/(^|\n=cut\b.+?\n+)[^=\s].+?\n(\n=\w+|\z)/$1$2/sg;
-	$string =~ s/\n*=pod\b[^\n]*\n+/\n\n/sg;
-	$string =~ s/\n*=cut\b[^\n]*\n+/\n\n/sg;
-	$string =~ s/^\n+//s;
-	return $string;
-}
-
-sub _write {
-	local *FH;
-	if ( $] >= 5.006 ) {
-		open( FH, '>', $_[0] ) or die "open($_[0]): $!";
-	} else {
-		open( FH, "> $_[0]"  ) or die "open($_[0]): $!";	
-	}
-	foreach ( 1 .. $#_ ) {
-		print FH $_[$_] or die "print($_[0]): $!";
-	}
-	close FH or die "close($_[0]): $!";
-}
-
-# _version is for processing module versions (eg, 1.03_05) not
-# Perl versions (eg, 5.8.1).
-sub _version ($) {
-	my $s = shift || 0;
-	my $d =()= $s =~ /(\.)/g;
-	if ( $d >= 2 ) {
-		# Normalise multipart versions
-		$s =~ s/(\.)(\d{1,3})/sprintf("$1%03d",$2)/eg;
-	}
-	$s =~ s/^(\d+)\.?//;
-	my $l = $1 || 0;
-	my @v = map {
-		$_ . '0' x (3 - length $_)
-	} $s =~ /(\d{1,3})\D?/g;
-	$l = $l . '.' . join '', @v if @v;
-	return $l + 0;
-}
-
-sub _cmp ($$) {
-	_version($_[0]) <=> _version($_[1]);
-}
-
-# Cloned from Params::Util::_CLASS
-sub _CLASS ($) {
-	(
-		defined $_[0]
-		and
-		! ref $_[0]
-		and
-		$_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s
-	) ? $_[0] : undef;
-}
-
-1;
-
-# Copyright 2008 - 2009 Adam Kennedy.
diff -pruN 1.110-1.3/lib/Algorithm/Dependency/Item.pm 1.112-1/lib/Algorithm/Dependency/Item.pm
--- 1.110-1.3/lib/Algorithm/Dependency/Item.pm	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency/Item.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,50 +1,41 @@
 package Algorithm::Dependency::Item;
+# ABSTRACT: Implements an item in a dependency hierarchy.
 
-=pod
-
-=head1 NAME
-
-Algorithm::Dependency::Item - Implements an item in a dependency heirachy.
-
-=head1 DESCRIPTION
-
-The Algorithm::Dependency::Item class implements a single item within the
-dependency heirachy. It's quite simple, usually created from within a source,
-and not typically created directly. This is provided for those implementing
-their own source. ( See L<Algorithm::Dependency::Source> for details ).
-
-=head1 METHODS
-
-=cut
+#pod =pod
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod The Algorithm::Dependency::Item class implements a single item within the
+#pod dependency hierarchy. It's quite simple, usually created from within a source,
+#pod and not typically created directly. This is provided for those implementing
+#pod their own source. ( See L<Algorithm::Dependency::Source> for details ).
+#pod
+#pod =head1 METHODS
+#pod
+#pod =cut
 
 use 5.005;
 use strict;
 use Algorithm::Dependency ();
 
-use vars qw{$VERSION};
-BEGIN {
-	$VERSION = '1.110';
-}
-
-
-
+our $VERSION = '1.112';
 
 
 #####################################################################
 # Constructor
 
-=pod
-
-=head2 new $id, @depends
-
-The C<new> constructor takes as its first argument the id ( name ) of the
-item, and any further arguments are assumed to be the ids of other items that
-this one depends on.
-
-Returns a new C<Algorithm::Dependency::Item> on success, or C<undef>
-on error.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 new $id, @depends
+#pod
+#pod The C<new> constructor takes as its first argument the id ( name ) of the
+#pod item, and any further arguments are assumed to be the ids of other items that
+#pod this one depends on.
+#pod
+#pod Returns a new C<Algorithm::Dependency::Item> on success, or C<undef>
+#pod on error.
+#pod
+#pod =cut
 
 sub new {
 	my $class = shift;
@@ -52,56 +43,88 @@ sub new {
 	bless { id => $id, depends => [ @_ ] }, $class;
 }
 
-=pod
+#pod =pod
+#pod
+#pod =head2 id
+#pod
+#pod The C<id> method returns the id of the item.
+#pod
+#pod =cut
 
-=head2 id
+sub id { $_[0]->{id} }
 
-The C<id> method returns the id of the item.
+#pod =pod
+#pod
+#pod =head2 depends
+#pod
+#pod The C<depends> method returns, as a list, the names of the other items that
+#pod this item depends on.
+#pod
+#pod =cut
 
-=cut
+sub depends { @{$_[0]->{depends}} }
 
-sub id { $_[0]->{id} }
+1;
+
+__END__
 
 =pod
 
-=head2 depends
+=encoding UTF-8
 
-The C<depends> method returns, as a list, the names of the other items that
-this item depends on.
+=head1 NAME
 
-=cut
+Algorithm::Dependency::Item - Implements an item in a dependency hierarchy.
 
-sub depends { @{$_[0]->{depends}} }
+=head1 VERSION
 
-1;
+version 1.112
 
-=pod
+=head1 DESCRIPTION
 
-=head1 SUPPORT
+The Algorithm::Dependency::Item class implements a single item within the
+dependency hierarchy. It's quite simple, usually created from within a source,
+and not typically created directly. This is provided for those implementing
+their own source. ( See L<Algorithm::Dependency::Source> for details ).
+
+=head1 METHODS
+
+=head2 new $id, @depends
 
-For general comments, contact the author.
+The C<new> constructor takes as its first argument the id ( name ) of the
+item, and any further arguments are assumed to be the ids of other items that
+this one depends on.
 
-To file a bug against this module, in a way you can keep track of, see the
-CPAN bug tracking system.
+Returns a new C<Algorithm::Dependency::Item> on success, or C<undef>
+on error.
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+=head2 id
 
-=head1 AUTHOR
+The C<id> method returns the id of the item.
 
-Adam Kennedy E<lt>adamk@cpan.orgE<gt>
+=head2 depends
+
+The C<depends> method returns, as a list, the names of the other items that
+this item depends on.
 
 =head1 SEE ALSO
 
 L<Algorithm::Dependency>
 
-=head1 COPYRIGHT
+=head1 SUPPORT
+
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
+
+=head1 AUTHOR
+
+Adam Kennedy <adamk@cpan.org>
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/lib/Algorithm/Dependency/Ordered.pm 1.112-1/lib/Algorithm/Dependency/Ordered.pm
--- 1.110-1.3/lib/Algorithm/Dependency/Ordered.pm	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency/Ordered.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,39 +1,30 @@
 package Algorithm::Dependency::Ordered;
+# ABSTRACT: Implements an ordered dependency hierarchy
 
-=pod
-
-=head1 NAME
-
-Algorithm::Dependency::Ordered - Implements an ordered dependency heirachy
-
-=head1 DESCRIPTION
-
-Algorithm::Dependency::Ordered implements the most common variety of
-L<Algorithm::Dependency>, the one in which the dependencies of an item must
-be acted upon before the item itself can be acted upon.
-
-In use and semantics, this should be used in exactly the same way as for the
-main parent class. Please note that the output of the C<depends> method is
-NOT changed, as the order of the depends is not assumed to be important.
-Only the output of the C<schedule> method is modified to ensure the correct
-order.
-
-For API details, see L<Algorithm::Dependency>.
-
-=cut
+#pod =pod
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod Algorithm::Dependency::Ordered implements the most common variety of
+#pod L<Algorithm::Dependency>, the one in which the dependencies of an item must
+#pod be acted upon before the item itself can be acted upon.
+#pod
+#pod In use and semantics, this should be used in exactly the same way as for the
+#pod main parent class. Please note that the output of the C<depends> method is
+#pod NOT changed, as the order of the depends is not assumed to be important.
+#pod Only the output of the C<schedule> method is modified to ensure the correct
+#pod order.
+#pod
+#pod For API details, see L<Algorithm::Dependency>.
+#pod
+#pod =cut
 
 use 5.005;
 use strict;
 use Algorithm::Dependency ();
 
-use vars qw{$VERSION @ISA};
-BEGIN {
-	$VERSION = '1.110';
-	@ISA     = 'Algorithm::Dependency';
-}
-
-
-
+our $VERSION = '1.112';
+our @ISA     = 'Algorithm::Dependency';
 
 
 sub schedule {
@@ -93,32 +84,52 @@ sub schedule {
 
 1;
 
+__END__
+
 =pod
 
-=head1 SUPPORT
+=encoding UTF-8
 
-Bugs should be submitted via the CPAN bug tracker, located at
+=head1 NAME
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+Algorithm::Dependency::Ordered - Implements an ordered dependency hierarchy
 
-For general comments, contact the author.
+=head1 VERSION
 
-=head1 AUTHOR
+version 1.112
+
+=head1 DESCRIPTION
 
-Adam Kennedy E<lt>adamk@cpan.orgE<gt>
+Algorithm::Dependency::Ordered implements the most common variety of
+L<Algorithm::Dependency>, the one in which the dependencies of an item must
+be acted upon before the item itself can be acted upon.
+
+In use and semantics, this should be used in exactly the same way as for the
+main parent class. Please note that the output of the C<depends> method is
+NOT changed, as the order of the depends is not assumed to be important.
+Only the output of the C<schedule> method is modified to ensure the correct
+order.
+
+For API details, see L<Algorithm::Dependency>.
 
 =head1 SEE ALSO
 
 L<Algorithm::Dependency>
 
-=head1 COPYRIGHT
+=head1 SUPPORT
+
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
+
+=head1 AUTHOR
+
+Adam Kennedy <adamk@cpan.org>
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/lib/Algorithm/Dependency/Source/File.pm 1.112-1/lib/Algorithm/Dependency/Source/File.pm
--- 1.110-1.3/lib/Algorithm/Dependency/Source/File.pm	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency/Source/File.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,66 +1,59 @@
 package Algorithm::Dependency::Source::File;
+# ABSTRACT: File source for dependency hierarchies
 
-=pod
-
-=head1 NAME
-
-Algorithm::Dependency::Source::File - File source for dependency heirachys
-
-=head1 DESCRIPTION
-
-Algorithm::Dependency::Source::File implements a
-L<source|Algorithm::Dependency::Source> where the items are stored in a flat
-file or a relatively simple format.
-
-=head2 File Format
-
-The file should be an ordinary text file, consisting of a series of lines,
-with each line completely containing the information for a single item.
-Blank lines, or lines beginning with the hash character '#' will be
-ignored as comments.
-
-For a single item line, only word characters will be used. A 'word character'
-consists of all letters and numbers, and the underscore '_' character.
-Anything that is not a word character will be assumed to be a seperator.
-
-The first word will be used as the name or id of the item, and any further
-words in the line will be used as other items that this one depends on. For
-example, all of the following are legal.
-
-  # A single item with no dependencies
-  Foo
-
-  # Another item that depends on the first one
-  Bar Foo
-
-  # Depending on multiple others
-  Bin Foo Bar
-
-  # We can use different seperators
-  One:Two|Three-Four+Five=Six Seven
-
-  # We can also use multiple non-word characters as seperators
-  This&*&^*&File:  is& & & :::REALLY()Neat
-
-From the examples above, it should be easy to create your own files.
-
-=head1 METHODS
-
-This documents the methods differing from the ordinary
-L<Algorithm::Dependency::Source> methods.
-
-=cut
+#pod =pod
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod Algorithm::Dependency::Source::File implements a
+#pod L<source|Algorithm::Dependency::Source> where the items are stored in a flat
+#pod file or a relatively simple format.
+#pod
+#pod =head2 File Format
+#pod
+#pod The file should be an ordinary text file, consisting of a series of lines,
+#pod with each line completely containing the information for a single item.
+#pod Blank lines, or lines beginning with the hash character '#' will be
+#pod ignored as comments.
+#pod
+#pod For a single item line, only word characters will be used. A 'word character'
+#pod consists of all letters and numbers, and the underscore '_' character.
+#pod Anything that is not a word character will be assumed to be a separator.
+#pod
+#pod The first word will be used as the name or id of the item, and any further
+#pod words in the line will be used as other items that this one depends on. For
+#pod example, all of the following are legal.
+#pod
+#pod   # A single item with no dependencies
+#pod   Foo
+#pod
+#pod   # Another item that depends on the first one
+#pod   Bar Foo
+#pod
+#pod   # Depending on multiple others
+#pod   Bin Foo Bar
+#pod
+#pod   # We can use different separators
+#pod   One:Two|Three-Four+Five=Six Seven
+#pod
+#pod   # We can also use multiple non-word characters as separators
+#pod   This&*&^*&File:  is& & & :::REALLY()Neat
+#pod
+#pod From the examples above, it should be easy to create your own files.
+#pod
+#pod =head1 METHODS
+#pod
+#pod This documents the methods differing from the ordinary
+#pod L<Algorithm::Dependency::Source> methods.
+#pod
+#pod =cut
 
 use 5.005;
 use strict;
 use Algorithm::Dependency::Source ();
 
-use vars qw{$VERSION @ISA};
-BEGIN {
-	$VERSION = '1.110';
-	@ISA     = 'Algorithm::Dependency::Source';
-}
-
+our $VERSION = '1.112';
+our @ISA     = 'Algorithm::Dependency::Source';
 
 
 
@@ -68,16 +61,16 @@ BEGIN {
 #####################################################################
 # Constructor
 
-=pod
-
-=head2 new $filename
-
-When constructing a new Algorithm::Dependency::Source::File object, an
-argument should be provided of the name of the file to use. The constructor
-will check that the file exists, and is readable, returning C<undef>
-otherwise.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 new $filename
+#pod
+#pod When constructing a new Algorithm::Dependency::Source::File object, an
+#pod argument should be provided of the name of the file to use. The constructor
+#pod will check that the file exists, and is readable, returning C<undef>
+#pod otherwise.
+#pod
+#pod =cut
 
 sub new {
 	my $class    = shift;
@@ -130,32 +123,88 @@ sub _load_item_list {
 
 1;
 
+__END__
+
 =pod
 
-=head1 SUPPORT
+=encoding UTF-8
 
-To file a bug against this module, use the CPAN bug tracking system
+=head1 NAME
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+Algorithm::Dependency::Source::File - File source for dependency hierarchies
 
-For other comments, contact the author.
+=head1 VERSION
 
-=head1 AUTHOR
+version 1.112
 
-Adam Kennedy <adamk@cpan.org>
+=head1 DESCRIPTION
+
+Algorithm::Dependency::Source::File implements a
+L<source|Algorithm::Dependency::Source> where the items are stored in a flat
+file or a relatively simple format.
+
+=head2 File Format
+
+The file should be an ordinary text file, consisting of a series of lines,
+with each line completely containing the information for a single item.
+Blank lines, or lines beginning with the hash character '#' will be
+ignored as comments.
+
+For a single item line, only word characters will be used. A 'word character'
+consists of all letters and numbers, and the underscore '_' character.
+Anything that is not a word character will be assumed to be a separator.
+
+The first word will be used as the name or id of the item, and any further
+words in the line will be used as other items that this one depends on. For
+example, all of the following are legal.
+
+  # A single item with no dependencies
+  Foo
+
+  # Another item that depends on the first one
+  Bar Foo
+
+  # Depending on multiple others
+  Bin Foo Bar
+
+  # We can use different separators
+  One:Two|Three-Four+Five=Six Seven
+
+  # We can also use multiple non-word characters as separators
+  This&*&^*&File:  is& & & :::REALLY()Neat
+
+From the examples above, it should be easy to create your own files.
+
+=head1 METHODS
+
+This documents the methods differing from the ordinary
+L<Algorithm::Dependency::Source> methods.
+
+=head2 new $filename
+
+When constructing a new Algorithm::Dependency::Source::File object, an
+argument should be provided of the name of the file to use. The constructor
+will check that the file exists, and is readable, returning C<undef>
+otherwise.
 
 =head1 SEE ALSO
 
 L<Algorithm::Dependency>
 
-=head1 COPYRIGHT
+=head1 SUPPORT
+
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
+
+=head1 AUTHOR
+
+Adam Kennedy <adamk@cpan.org>
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/lib/Algorithm/Dependency/Source/HoA.pm 1.112-1/lib/Algorithm/Dependency/Source/HoA.pm
--- 1.110-1.3/lib/Algorithm/Dependency/Source/HoA.pm	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency/Source/HoA.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,65 +1,56 @@
 package Algorithm::Dependency::Source::HoA;
+# ABSTRACT: Source for a HASH of ARRAYs
 
-=pod
-
-=head1 NAME
-
-Algorithm::Dependency::Source::HoA - Source for a HASH of ARRAYs
-
-=head1 SYNOPSIS
-
-  # The basic data structure
-  my $deps = {
-      foo => [ 'bar', 'baz' ],
-      bar => [],
-      baz => [ 'bar' ],
-      };
-  
-  # Create the source from it
-  my $Source = Algorithm::Dependency::Source::HoA->new( $deps );
-
-=head1 DESCRIPTION
-
-C<Algorithm::Dependency::Source::HoA> implements a
-L<source|Algorithm::Dependency::Source> where the items names are provided
-in the most simple form, a reference to a C<HASH> of C<ARRAY> references.
-
-=head1 METHODS
-
-This documents the methods differing from the ordinary
-L<Algorithm::Dependency::Source> methods.
-
-=cut
+#pod =pod
+#pod
+#pod =head1 SYNOPSIS
+#pod
+#pod   # The basic data structure
+#pod   my $deps = {
+#pod       foo => [ 'bar', 'baz' ],
+#pod       bar => [],
+#pod       baz => [ 'bar' ],
+#pod       };
+#pod   
+#pod   # Create the source from it
+#pod   my $Source = Algorithm::Dependency::Source::HoA->new( $deps );
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod C<Algorithm::Dependency::Source::HoA> implements a
+#pod L<source|Algorithm::Dependency::Source> where the items names are provided
+#pod in the most simple form, a reference to a C<HASH> of C<ARRAY> references.
+#pod
+#pod =head1 METHODS
+#pod
+#pod This documents the methods differing from the ordinary
+#pod L<Algorithm::Dependency::Source> methods.
+#pod
+#pod =cut
 
 use 5.005;
 use strict;
 use Algorithm::Dependency::Source ();
 use Params::Util qw{_HASH _ARRAY0};
 
-use vars qw{$VERSION @ISA};
-BEGIN {
-	$VERSION = '1.110';
-	@ISA     = 'Algorithm::Dependency::Source';
-}
-
-
-
+our $VERSION = '1.112';
+our @ISA     = 'Algorithm::Dependency::Source';
 
 
 #####################################################################
 # Constructor
 
-=pod
-
-=head2 new $filename
-
-When constructing a new C<Algorithm::Dependency::Source::HoA> object, an
-argument should be provided of a reference to a HASH of ARRAY references,
-containing the names of other HASH elements.
-
-Returns the object, or C<undef> if the structure is not correct.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 new $filename
+#pod
+#pod When constructing a new C<Algorithm::Dependency::Source::HoA> object, an
+#pod argument should be provided of a reference to a HASH of ARRAY references,
+#pod containing the names of other HASH elements.
+#pod
+#pod Returns the object, or C<undef> if the structure is not correct.
+#pod
+#pod =cut
 
 sub new {
 	my $class = shift;
@@ -99,32 +90,69 @@ sub _load_item_list {
 
 1;
 
+__END__
+
 =pod
 
-=head1 SUPPORT
+=encoding UTF-8
 
-To file a bug against this module, use the CPAN bug tracking system
+=head1 NAME
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+Algorithm::Dependency::Source::HoA - Source for a HASH of ARRAYs
 
-For other comments, contact the author.
+=head1 VERSION
 
-=head1 AUTHOR
+version 1.112
 
-Adam Kennedy <adamk@cpan.org>
+=head1 SYNOPSIS
+
+  # The basic data structure
+  my $deps = {
+      foo => [ 'bar', 'baz' ],
+      bar => [],
+      baz => [ 'bar' ],
+      };
+  
+  # Create the source from it
+  my $Source = Algorithm::Dependency::Source::HoA->new( $deps );
+
+=head1 DESCRIPTION
+
+C<Algorithm::Dependency::Source::HoA> implements a
+L<source|Algorithm::Dependency::Source> where the items names are provided
+in the most simple form, a reference to a C<HASH> of C<ARRAY> references.
+
+=head1 METHODS
+
+This documents the methods differing from the ordinary
+L<Algorithm::Dependency::Source> methods.
+
+=head2 new $filename
+
+When constructing a new C<Algorithm::Dependency::Source::HoA> object, an
+argument should be provided of a reference to a HASH of ARRAY references,
+containing the names of other HASH elements.
+
+Returns the object, or C<undef> if the structure is not correct.
 
 =head1 SEE ALSO
 
 L<Algorithm::Dependency>, L<Algorithm::Dependency::Source>
 
-=head1 COPYRIGHT
+=head1 SUPPORT
+
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
+
+=head1 AUTHOR
+
+Adam Kennedy <adamk@cpan.org>
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/lib/Algorithm/Dependency/Source/Invert.pm 1.112-1/lib/Algorithm/Dependency/Source/Invert.pm
--- 1.110-1.3/lib/Algorithm/Dependency/Source/Invert.pm	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency/Source/Invert.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,35 +1,26 @@
 package Algorithm::Dependency::Source::Invert;
+# ABSTRACT: Logically invert a source
 
-=pod
-
-=head1 NAME
-
-Algorithm::Dependency::Source::Invert - Logically invert a source
-
-=head1 SYNOPSIS
-
-  my $inverted = Algorithm::Dependency::Source::Invert->new( $source );
-
-=head1 DESCRIPTION
-
-This class creates a source from another source, but with all dependencies
-reversed.
-
-=cut
+#pod =pod
+#pod
+#pod =head1 SYNOPSIS
+#pod
+#pod   my $inverted = Algorithm::Dependency::Source::Invert->new( $source );
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod This class creates a source from another source, but with all dependencies
+#pod reversed.
+#pod
+#pod =cut
 
 use 5.005;
 use strict;
 use Params::Util '_INSTANCE';
 use Algorithm::Dependency::Source::HoA ();
 
-use vars qw{$VERSION @ISA};
-BEGIN {
-	$VERSION = '1.110';
-	@ISA     = 'Algorithm::Dependency::Source::HoA';
-}
-
-
-
+our $VERSION = '1.112';
+our @ISA     = 'Algorithm::Dependency::Source::HoA';
 
 
 #####################################################################
@@ -56,32 +47,47 @@ sub new {
 
 1;
 
+__END__
+
 =pod
 
-=head1 SUPPORT
+=encoding UTF-8
 
-To file a bug against this module, use the CPAN bug tracking system
+=head1 NAME
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+Algorithm::Dependency::Source::Invert - Logically invert a source
 
-For other comments, contact the author.
+=head1 VERSION
 
-=head1 AUTHOR
+version 1.112
 
-Adam Kennedy <adamk@cpan.org>
+=head1 SYNOPSIS
+
+  my $inverted = Algorithm::Dependency::Source::Invert->new( $source );
+
+=head1 DESCRIPTION
+
+This class creates a source from another source, but with all dependencies
+reversed.
 
 =head1 SEE ALSO
 
 L<Algorithm::Dependency::Source>, L<Algorithm::Dependency::Source::HoA>
 
-=head1 COPYRIGHT
+=head1 SUPPORT
+
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
+
+=head1 AUTHOR
+
+Adam Kennedy <adamk@cpan.org>
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/lib/Algorithm/Dependency/Source.pm 1.112-1/lib/Algorithm/Dependency/Source.pm
--- 1.110-1.3/lib/Algorithm/Dependency/Source.pm	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency/Source.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,56 +1,47 @@
 package Algorithm::Dependency::Source;
+# ABSTRACT: Implements a source of hierarchy items
 
-=pod
-
-=head1 NAME
-
-Algorithm::Dependency::Source - Implements a source of heirachy items
-
-=head1 DESCRIPTION
-
-The Algorithm::Dependency::Source class provides an abstract parent class for
-implementing sources for the heirachy data the algorithm will use. For an
-example of an implementation of this, see
-L<Algorithm::Dependency::Source::File>, which is bundled with the main
-L<Algorithm::Dependency> package.
-
-=head1 METHODS
-
-=cut
+#pod =pod
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod The Algorithm::Dependency::Source class provides an abstract parent class for
+#pod implementing sources for the hierarchy data the algorithm will use. For an
+#pod example of an implementation of this, see
+#pod L<Algorithm::Dependency::Source::File>, which is bundled with the main
+#pod L<Algorithm::Dependency> package.
+#pod
+#pod =head1 METHODS
+#pod
+#pod =cut
 
 use 5.005;
 use strict;
 use Algorithm::Dependency ();
 use Params::Util qw{_SET};
 
-use vars qw{$VERSION};
-BEGIN {
-	$VERSION = '1.110';
-}
-
-
-
+our $VERSION = '1.112';
 
 
 #####################################################################
 # Constructor
 
-=pod
-
-=head2 new @arguments
-
-Although you cannot directly use the C<new> constructor for
-C<Algorithm::Dependency::Source>, it will work the same in all subclasses.
-
-The constructor takes zero or more subclass specific arguments to define the
-location of the source of the items, and returns a new object. Alrough it
-may check that the arguments you passed are valid, the source will usually
-NOT actually load the items from the source, instead defering the loading
-until you need to use the items.
-
-Returns a new object on success, or C<undef> on error.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 new @arguments
+#pod
+#pod Although you cannot directly use the C<new> constructor for
+#pod C<Algorithm::Dependency::Source>, it will work the same in all subclasses.
+#pod
+#pod The constructor takes zero or more subclass specific arguments to define the
+#pod location of the source of the items, and returns a new object. Although it
+#pod may check that the arguments you passed are valid, the source will usually
+#pod NOT actually load the items from the source, instead deferring the loading
+#pod until you need to use the items.
+#pod
+#pod Returns a new object on success, or C<undef> on error.
+#pod
+#pod =cut
 
 sub new {
 	my $class = shift;
@@ -75,19 +66,19 @@ sub new {
 	$self;
 }
 
-=pod
-
-=head2 load
-
-The C<load> method is the public method used to actually load the items from
-their storage location into the the source object. The method will
-automatically called, as needed, in most circumstances. You would generally
-only want to use C<load> manually if you think there may be some uncertainty
-that the source will load correctly, and want to check it will work.
-
-Returns true if the items are loaded successfully, or C<undef> on error.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 load
+#pod
+#pod The C<load> method is the public method used to actually load the items from
+#pod their storage location into the the source object. The method will
+#pod automatically called, as needed, in most circumstances. You would generally
+#pod only want to use C<load> manually if you think there may be some uncertainty
+#pod that the source will load correctly, and want to check it will work.
+#pod
+#pod Returns true if the items are loaded successfully, or C<undef> on error.
+#pod
+#pod =cut
 
 sub load {
 	my $self = shift;
@@ -123,17 +114,17 @@ sub load {
 	$self->{loaded} = 1;
 }
 
-=pod
-
-=head2 item $name
-
-The C<item> method fetches and returns the item object specified by the
-name argument.
-
-Returns an L<Algorithm::Dependency::Item> object on success, or C<undef> if
-the named item does not exist in the source.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 item $name
+#pod
+#pod The C<item> method fetches and returns the item object specified by the
+#pod name argument.
+#pod
+#pod Returns an L<Algorithm::Dependency::Item> object on success, or C<undef> if
+#pod the named item does not exist in the source.
+#pod
+#pod =cut
 
 sub item {
 	my $self = shift;
@@ -144,18 +135,18 @@ sub item {
 	$self->{items_hash}->{$id};
 }
 
-=pod
-
-=head2 items
-
-The C<items> method returns, as a list of objects, all of the items
-contained in the source. The item objects will be returned in the same order
-as that in the storage location.
-
-Returns a list of L<Algorithm::Dependency::Item> objects on success, or
-C<undef> on error.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 items
+#pod
+#pod The C<items> method returns, as a list of objects, all of the items
+#pod contained in the source. The item objects will be returned in the same order
+#pod as that in the storage location.
+#pod
+#pod Returns a list of L<Algorithm::Dependency::Item> objects on success, or
+#pod C<undef> on error.
+#pod
+#pod =cut
 
 sub items {
 	my $self = shift;
@@ -163,20 +154,20 @@ sub items {
 	@{ $self->{items_array} };
 }
 
-=pod
-
-=head2 missing_dependencies
-
-By default, we are leniant with missing dependencies if the item is neved 
-used. For systems where having a missing dependency can be very bad, the 
-C<missing_dependencies> method checks all Items to make sure their 
-dependencies exist.
-
-If there are any missing dependencies, returns a reference to an array of
-their ids. If there are no missing dependencies, returns 0. Returns 
-C<undef> on error.
-
-=cut
+#pod =pod
+#pod
+#pod =head2 missing_dependencies
+#pod
+#pod By default, we are lenient with missing dependencies if the item is never 
+#pod used. For systems where having a missing dependency can be very bad, the 
+#pod C<missing_dependencies> method checks all Items to make sure their 
+#pod dependencies exist.
+#pod
+#pod If there are any missing dependencies, returns a reference to an array of
+#pod their ids. If there are no missing dependencies, returns 0. Returns 
+#pod C<undef> on error.
+#pod
+#pod =cut
 
 sub missing_dependencies {
 	my $self = shift;
@@ -204,8 +195,81 @@ sub _load_item_list {
 
 1;
 
+__END__
+
 =pod
 
+=encoding UTF-8
+
+=head1 NAME
+
+Algorithm::Dependency::Source - Implements a source of hierarchy items
+
+=head1 VERSION
+
+version 1.112
+
+=head1 DESCRIPTION
+
+The Algorithm::Dependency::Source class provides an abstract parent class for
+implementing sources for the hierarchy data the algorithm will use. For an
+example of an implementation of this, see
+L<Algorithm::Dependency::Source::File>, which is bundled with the main
+L<Algorithm::Dependency> package.
+
+=head1 METHODS
+
+=head2 new @arguments
+
+Although you cannot directly use the C<new> constructor for
+C<Algorithm::Dependency::Source>, it will work the same in all subclasses.
+
+The constructor takes zero or more subclass specific arguments to define the
+location of the source of the items, and returns a new object. Although it
+may check that the arguments you passed are valid, the source will usually
+NOT actually load the items from the source, instead deferring the loading
+until you need to use the items.
+
+Returns a new object on success, or C<undef> on error.
+
+=head2 load
+
+The C<load> method is the public method used to actually load the items from
+their storage location into the the source object. The method will
+automatically called, as needed, in most circumstances. You would generally
+only want to use C<load> manually if you think there may be some uncertainty
+that the source will load correctly, and want to check it will work.
+
+Returns true if the items are loaded successfully, or C<undef> on error.
+
+=head2 item $name
+
+The C<item> method fetches and returns the item object specified by the
+name argument.
+
+Returns an L<Algorithm::Dependency::Item> object on success, or C<undef> if
+the named item does not exist in the source.
+
+=head2 items
+
+The C<items> method returns, as a list of objects, all of the items
+contained in the source. The item objects will be returned in the same order
+as that in the storage location.
+
+Returns a list of L<Algorithm::Dependency::Item> objects on success, or
+C<undef> on error.
+
+=head2 missing_dependencies
+
+By default, we are lenient with missing dependencies if the item is never 
+used. For systems where having a missing dependency can be very bad, the 
+C<missing_dependencies> method checks all Items to make sure their 
+dependencies exist.
+
+If there are any missing dependencies, returns a reference to an array of
+their ids. If there are no missing dependencies, returns 0. Returns 
+C<undef> on error.
+
 =head1 EXTENDING
 
 C<Algorithm::Dependency::Source> itself is a fairly thin module, and it
@@ -235,31 +299,24 @@ Having completed these two things, your
 an example of the code, have a look at the source for the simple subclass
 L<Algorithm::Dependency::Source::File>.
 
-=head1 SUPPORT
+=head1 SEE ALSO
 
-For general comments, contact the author.
+L<Algorithm::Dependency>, L<Algorithm::Dependency::Source::File>
 
-To file a bug against this module, in a way you can keep track of, see the
-CPAN bug tracking system.
+=head1 SUPPORT
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
 
 =head1 AUTHOR
 
-Adam Kennedy E<lt>adamk@cpan.orgE<gt>
-
-=head1 SEE ALSO
-
-L<Algorithm::Dependency>, L<Algorithm::Dependency::Source::File>
-
-=head1 COPYRIGHT
+Adam Kennedy <adamk@cpan.org>
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/lib/Algorithm/Dependency/Weight.pm 1.112-1/lib/Algorithm/Dependency/Weight.pm
--- 1.110-1.3/lib/Algorithm/Dependency/Weight.pm	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency/Weight.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,11 +1,259 @@
 package Algorithm::Dependency::Weight;
+# ABSTRACT: Calculate dependency 'weights'
+
+#pod =pod
+#pod
+#pod =head1 SYNOPSIS
+#pod
+#pod   # Create a source from a file
+#pod   my $Source = Algorithm::Dependency::Source->new( 'file.txt' );
+#pod   
+#pod   # Create a Weight algorithm object
+#pod   my $alg = Algorithm::Dependency::Weight->new( source => $Source );
+#pod   
+#pod   # Find the weight for a single item
+#pod   my $weight = $alg->weight('foo');
+#pod   print "The weight of 'foo' is $weight\n";
+#pod   
+#pod   # Or a group
+#pod   my $hash = $alg->weight_hash('foo', 'bar', 'baz');
+#pod   print "The weight of 'foo', 'bar', and 'bar' are $hash->{foo},"
+#pod       . " $hash->{bar} and $hash->{baz} respectively\n";
+#pod   
+#pod   # Or all of the items
+#pod   my $all = $alg->weight_all;
+#pod   print "The following is a list from heaviest to lightest:\n";
+#pod   foreach ( sort { $all->{$b} <=> $all->{$a} } keys %$all ) {
+#pod       print "$_: $all->{$_}\n";
+#pod   }
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod In dependency systems, it can often be very useful to calculate
+#pod an aggregate or sum for one or all items. For example, to find
+#pod the "naive install weight" of a Perl distribution (where "naive"
+#pod means you treat each distribution equally), you would want the
+#pod distribution (1) + all its dependencies (n) + all B<their>
+#pod dependencies (n2) recursively downwards.
+#pod
+#pod If calculated using a normal L<Algorithm::Dependency> object, the
+#pod result would be (in a simple systems) equal to:
+#pod
+#pod   # Create your normal (non-ordered alg:dep)
+#pod   my $dependency = Algorithm::Dependency->new( ... );
+#pod   
+#pod   # Find the naive weight for an item
+#pod   my $weight = scalar($dependency->schedule('itemname'));
+#pod
+#pod C<Algorithm::Dependency::Weight> provides a way of doing this
+#pod with a little more sophistication, and in a way that should work
+#pod reasonable well across all the L<Algorithm::Dependency> family.
+#pod
+#pod Please note that the this might be a little (or more than a little)
+#pod slower than it could be for the limited case of generating weights
+#pod for all of the items at once in a dependency system with no selected
+#pod items and no circular dependencies. BUT you can at least rely on
+#pod this class to do the job properly regardless of the particulars of
+#pod the situation, which is probably more important.
+#pod
+#pod =head2 METHODS
+#pod
+#pod =cut
+
+use 5.005;
+use strict;
+use List::Util            ();
+use Algorithm::Dependency ();
+use Params::Util qw{_INSTANCE _STRING};
+
+our $VERSION = '1.112';
+
+
+#####################################################################
+# Constructor and Accessors
+
+#pod =pod
+#pod
+#pod =head2 new @params
+#pod
+#pod The C<new> constructor creates a new C<Algorithm::Dependency::Weight>
+#pod object. It takes a number of key/value pairs as parameters (although
+#pod at the present time only one).
+#pod
+#pod =over 4
+#pod
+#pod =item source => $Source
+#pod
+#pod The C<source> param is mostly the same as for L<Algorithm::Dependency>.
+#pod The one addition is that as a source you can provide an
+#pod L<Algorithm::Dependency> object, and the L<Algorithm::Dependency::Source>
+#pod for that will be used.
+#pod
+#pod =back
+#pod
+#pod Returns a new C<Algorithm::Dependency::Weight> object, or C<undef> on error.
+#pod
+#pod =cut
+
+sub new {
+	my $class = shift;
+	my %args  = @_;
+
+	# Get the source object, or derive it from an existing alg-dep
+	my $source = _INSTANCE($args{source}, 'Algorithm::Dependency')
+		? $args{source}->source
+		: _INSTANCE($args{source}, 'Algorithm::Dependency::Source')
+		or return undef;
+
+	# Build the alg-dep object we use
+	my $algdep = Algorithm::Dependency->new(
+		source         => $source,
+		ignore_orphans => 1,
+		) or return undef;
+
+	# Create the basic object
+	my $self = bless {
+		source => $source,
+		algdep => $algdep,
+		weight => {},
+		}, $class;
+
+	$self;
+}
+
+#pod =pod
+#pod
+#pod =head2 source
+#pod
+#pod The C<source> accessor returns the source used for the weight calculations.
+#pod
+#pod This will be either the one passed to the constructor, or the source from
+#pod inside the C<Algorithm::Dependency> object passed as the C<source> param
+#pod (B<not> the object itself, B<its> source).
+#pod
+#pod =cut
+
+sub source {
+	$_[0]->{source}
+}
+
+
+
+
+
+#####################################################################
+# Algorithm::Dependency::Weight Methods
+
+#pod =pod
+#pod
+#pod =head2 weight $name
+#pod
+#pod The C<weight> method takes the name of a single item and calculates its
+#pod weight based on the configuration of the C<Algorithm::Dependency::Weight>
+#pod object.
+#pod
+#pod Returns the weight as a scalar (which in the naive case will be an
+#pod integer, but in more complex uses may be any real number), or C<undef>
+#pod on error.
+#pod
+#pod =cut
+
+sub weight {
+	my $self = shift;
+	my $id   = defined(_STRING($_[0])) ? shift : return undef;
+	$self->{weight}->{$id} or
+	$self->{weight}->{$id} = $self->_weight($id);
+}
+
+sub _weight {
+	my $self  = shift;
+	my $items = $self->{algdep}->schedule($_[0]) or return undef;
+	scalar(@$items);
+}
+
+#pod =pod
+#pod
+#pod =head2 weight_merged @names
+#pod
+#pod The C<weight_merged> method takes the name of a set of items and
+#pod calculates an aggregated weight for the whole set.
+#pod
+#pod Returns the weight as a scalar, or C<undef> on error.
+#pod
+#pod =cut
+
+sub weight_merged {
+	my $self  = shift;
+	my $items = $self->{algdep}->schedule(@_) or return undef;
+	scalar(@$items);
+}
+
+#pod =pod
+#pod
+#pod =head2 weight_hash @names
+#pod
+#pod The C<weight_hash> method takes a list of item names, and calculates
+#pod their weights.
+#pod
+#pod Returns a reference to a C<HASH> with the item names as keys and weights
+#pod as values, or C<undef> on error.
+#pod
+#pod =cut
+
+sub weight_hash {
+	my $self  = shift;
+	my @names = @_;
+
+	# Iterate over the list
+	my %hash = ();
+	foreach my $name ( @names ) {
+		if ( $self->{weight}->{$name} ) {
+			$hash{$name} = $self->{weight}->{$name};
+			next;
+		}
+		$hash{$name} = $self->weight($name) or return undef;
+	}
+
+	\%hash;
+}
+
+#pod =pod
+#pod
+#pod =head2 weight_all
+#pod
+#pod The C<weight_all> method provides the one-shot method for getting the
+#pod weights of all items at once. Please note that this does not do
+#pod anything different or special, but is slightly faster than iterating
+#pod yourself.
+#pod
+#pod Returns a reference to a C<HASH> with the item names as keys and weights
+#pod as values, or C<undef> on error.
+#pod
+#pod =cut
+
+sub weight_all {
+	my $self  = shift;
+	my @items = $self->source->items;
+	defined $items[0] or return undef;
+	$self->weight_hash( map { $_->id } @items );
+}
+
+1;
+
+__END__
 
 =pod
 
+=encoding UTF-8
+
 =head1 NAME
 
 Algorithm::Dependency::Weight - Calculate dependency 'weights'
 
+=head1 VERSION
+
+version 1.112
+
 =head1 SYNOPSIS
 
   # Create a source from a file
@@ -36,7 +284,7 @@ In dependency systems, it can often be v
 an aggregate or sum for one or all items. For example, to find
 the "naive install weight" of a Perl distribution (where "naive"
 means you treat each distribution equally), you would want the
-distribtion (1) + all its dependencies (n) + all B<their>
+distribution (1) + all its dependencies (n) + all B<their>
 dependencies (n2) recursively downwards.
 
 If calculated using a normal L<Algorithm::Dependency> object, the
@@ -61,28 +309,6 @@ the situation, which is probably more im
 
 =head2 METHODS
 
-=cut
-
-use 5.005;
-use strict;
-use List::Util            ();
-use Algorithm::Dependency ();
-use Params::Util qw{_INSTANCE _STRING};
-
-use vars qw{$VERSION};
-BEGIN {
-	$VERSION = '1.110';
-}
-
-
-
-
-
-#####################################################################
-# Constructor and Accessors
-
-=pod
-
 =head2 new @params
 
 The C<new> constructor creates a new C<Algorithm::Dependency::Weight>
@@ -102,36 +328,6 @@ for that will be used.
 
 Returns a new C<Algorithm::Dependency::Weight> object, or C<undef> on error.
 
-=cut
-
-sub new {
-	my $class = shift;
-	my %args  = @_;
-
-	# Get the source object, or derive it from an existing alg-dep
-	my $source = _INSTANCE($args{source}, 'Algorithm::Dependency')
-		? $args{source}->source
-		: _INSTANCE($args{source}, 'Algorithm::Dependency::Source')
-		or return undef;
-
-	# Build the alg-dep object we use
-	my $algdep = Algorithm::Dependency->new(
-		source         => $source,
-		ignore_orphans => 1,
-		) or return undef;
-
-	# Create the basic object
-	my $self = bless {
-		source => $source,
-		algdep => $algdep,
-		weight => {},
-		}, $class;
-
-	$self;
-}
-
-=pod
-
 =head2 source
 
 The C<source> accessor returns the source used for the weight calculations.
@@ -140,21 +336,6 @@ This will be either the one passed to th
 inside the C<Algorithm::Dependency> object passed as the C<source> param
 (B<not> the object itself, B<its> source).
 
-=cut
-
-sub source {
-	$_[0]->{source}
-}
-
-
-
-
-
-#####################################################################
-# Algorithm::Dependency::Weight Methods
-
-=pod
-
 =head2 weight $name
 
 The C<weight> method takes the name of a single item and calculates its
@@ -165,23 +346,6 @@ Returns the weight as a scalar (which in
 integer, but in more complex uses may be any real number), or C<undef>
 on error.
 
-=cut
-
-sub weight {
-	my $self = shift;
-	my $id   = defined(_STRING($_[0])) ? shift : return undef;
-	$self->{weight}->{$id} or
-	$self->{weight}->{$id} = $self->_weight($id);
-}
-
-sub _weight {
-	my $self  = shift;
-	my $items = $self->{algdep}->schedule($_[0]) or return undef;
-	scalar(@$items);
-}
-
-=pod
-
 =head2 weight_merged @names
 
 The C<weight_merged> method takes the name of a set of items and
@@ -189,16 +353,6 @@ calculates an aggregated weight for the
 
 Returns the weight as a scalar, or C<undef> on error.
 
-=cut
-
-sub weight_merged {
-	my $self  = shift;
-	my $items = $self->{algdep}->schedule(@_) or return undef;
-	scalar(@$items);
-}
-
-=pod
-
 =head2 weight_hash @names
 
 The C<weight_hash> method takes a list of item names, and calculates
@@ -207,27 +361,6 @@ their weights.
 Returns a reference to a C<HASH> with the item names as keys and weights
 as values, or C<undef> on error.
 
-=cut
-
-sub weight_hash {
-	my $self  = shift;
-	my @names = @_;
-
-	# Iterate over the list
-	my %hash = ();
-	foreach my $name ( @names ) {
-		if ( $self->{weight}->{$name} ) {
-			$hash{$name} = $self->{weight}->{$name};
-			next;
-		}
-		$hash{$name} = $self->weight($name) or return undef;
-	}
-
-	\%hash;
-}
-
-=pod
-
 =head2 weight_all
 
 The C<weight_all> method provides the one-shot method for getting the
@@ -238,47 +371,28 @@ yourself.
 Returns a reference to a C<HASH> with the item names as keys and weights
 as values, or C<undef> on error.
 
-=cut
-
-sub weight_all {
-	my $self  = shift;
-	my @items = $self->source->items;
-	defined $items[0] or return undef;
-	$self->weight_hash( map { $_->id } @items );
-}
-
-1;
-
-=pod
-
 =head1 TO DO
 
 - Add support for non-naive weights via either custom code or method name
 
-=head1 SUPPORT
+=head1 SEE ALSO
 
-Bugs should be submitted via the CPAN bug tracker, located at
+L<Algorithm::Dependency>, L<Algorithm::Dependency::Source>
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+=head1 SUPPORT
 
-For general comments, contact the author.
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
 
 =head1 AUTHOR
 
-Adam Kennedy E<lt>adamk@cpan.orgE<gt>
-
-=head1 SEE ALSO
-
-L<Algorithm::Dependency>, L<Algorithm::Dependency::Source>
-
-=head1 COPYRIGHT
+Adam Kennedy <adamk@cpan.org>
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/lib/Algorithm/Dependency.pm 1.112-1/lib/Algorithm/Dependency.pm
--- 1.110-1.3/lib/Algorithm/Dependency.pm	2009-04-14 09:15:37.000000000 +0000
+++ 1.112-1/lib/Algorithm/Dependency.pm	2020-04-28 03:15:31.000000000 +0000
@@ -1,13 +1,437 @@
-package Algorithm::Dependency;
+package Algorithm::Dependency; # git description: v1.111-8-g2fb772e
+# ABSTRACT: Base class for implementing various dependency trees
+
+#pod =pod
+#pod
+#pod =head1 SYNOPSIS
+#pod
+#pod Typical Usage: Ordering based on dependency requirements
+#pod   
+#pod   use Algorithm::Dependency::Ordered;
+#pod   use Algorithm::Dependency::Source::HoA;
+#pod   
+#pod   my $deps = {
+#pod     core  => [ ],
+#pod     a     => [ 'core' ],
+#pod     b     => [ 'a' ]
+#pod     this  => [ ],
+#pod     that  => [ ],
+#pod   };
+#pod   my $deps_source = Algorithm::Dependency::Source::HoA->new( $deps );
+#pod
+#pod   my $dep = Algorithm::Dependency::Ordered->new(
+#pod     source   => $deps_source,
+#pod     selected => [ 'this', 'that' ], # Items we have processed elsewhere or have already satisfied
+#pod   )
+#pod   or die 'Failed to set up dependency algorithm';
+#pod
+#pod   my $also = $dep->schedule_all();
+#pod   # Returns: ['core', 'a', 'b'] -- ie: installation-order. Whereas using base
+#pod   # Algorithm::Dependency would return sorted ['a', 'b', 'core']
+#pod
+#pod   my $also = $dep->schedule( 'b' );
+#pod   # Returns: ['core', 'a', 'b'] -- installation order, including ourselves
+#pod
+#pod   my $also = $dep->depends( 'b' );
+#pod   # Returns: ['a', 'core'] -- sorted order, not including ourselves
+#pod
+#pod Base Classes
+#pod
+#pod   use Algorithm::Dependency;
+#pod   use Algorithm::Dependency::Source::File;
+#pod   
+#pod   # Load the data from a simple text file
+#pod   my $data_source = Algorithm::Dependency::Source::File->new( 'foo.txt' );
+#pod   
+#pod   # Create the dependency object, and indicate the items that are already
+#pod   # selected/installed/etc in the database
+#pod   my $dep = Algorithm::Dependency->new(
+#pod       source   => $data_source,
+#pod       selected => [ 'This', 'That' ]
+#pod   ) or die 'Failed to set up dependency algorithm';
+#pod   
+#pod   # For the item 'Foo', find out the other things we also have to select.
+#pod   # This WON'T include the item we selected, 'Foo'.
+#pod   my $also = $dep->depends( 'Foo' );
+#pod   print $also
+#pod   	? "By selecting 'Foo', you are also selecting the following items: "
+#pod   		. join( ', ', @$also )
+#pod   	: "Nothing else to select for 'Foo'";
+#pod   
+#pod   # Find out the order we need to act on the items in.
+#pod   # This WILL include the item we selected, 'Foo'.
+#pod   my $schedule = $dep->schedule( 'Foo' );
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod Algorithm::Dependency is a framework for creating simple read-only
+#pod dependency hierarchies, where you have a set of items that rely on other
+#pod items in the set, and require actions on them as well.
+#pod
+#pod Despite the most visible of these being software installation systems like
+#pod the CPAN installer, or Debian apt-get, they are useful in other situations.
+#pod This module intentionally uses implementation-neutral words, to avoid
+#pod confusion.
+#pod
+#pod =head2 Terminology
+#pod
+#pod The term C<ITEM> refers to a single entity, such as a single software
+#pod package, in the overall set of possible entities. Internally, this is a
+#pod fairly simple object. See L<Algorithm::Dependency::Item> for details.
+#pod
+#pod The term C<SELECT> means that a particular item, for your purposes, has
+#pod already been acted up in the required way. For example, if the software
+#pod package had already been installed, and didn't need to be re-installed,
+#pod it would be C<SELECTED>.
+#pod
+#pod The term C<SOURCE> refers to a location that contains the master set of
+#pod items. This will be very application specific, and might be a flat file,
+#pod some form of database, the list of files in a folder, or generated
+#pod dynamically.
+#pod
+#pod =head2 General Description
+#pod
+#pod =for stopwords versioned
+#pod
+#pod Algorithm::Dependency implements algorithms relating to dependency
+#pod hierarchies. To use this framework, all you need is a source for the master
+#pod list of all the items, and a list of those already selected. If your
+#pod dependency hierarchy doesn't require the concept of items that are already
+#pod selected, simply don't pass anything to the constructor for it.
+#pod
+#pod Please note that the class Algorithm::Dependency does NOT implement an
+#pod ordering, for speed and simplicity reasons. That is, the C<schedule> it
+#pod provides is not in any particular order. If item 'A' depends on item 'B',
+#pod it will not place B before A in the schedule. This makes it unsuitable for
+#pod things like software installers, as they typically would need B to be
+#pod installed before A, or the installation of A would fail.
+#pod
+#pod For dependency hierarchies requiring the items to be acted on in a particular
+#pod order, either top down or bottom up, see L<Algorithm::Dependency::Ordered>.
+#pod It should be more applicable for your needs. This is the the subclass you
+#pod would probably use to implement a simple ( non-versioned ) package
+#pod installation system. Please note that an ordered hierarchy has additional
+#pod constraints. For example, circular dependencies ARE legal in a
+#pod non-ordered hierarchy, but ARE NOT legal in an ordered hierarchy.
+#pod
+#pod =head2 Extending
+#pod
+#pod A module for creating a source from a simple flat file is included. For
+#pod details see L<Algorithm::Dependency::Source::File>. Information on creating
+#pod a source for your particular use is in L<Algorithm::Dependency::Source>.
+#pod
+#pod =head1 METHODS
+#pod
+#pod =cut
+
+use 5.005;
+use strict;
+use Params::Util qw{_INSTANCE _ARRAY};
+use Algorithm::Dependency::Item   ();
+use Algorithm::Dependency::Source ();
+
+our $VERSION = '1.112';
+
+
+#####################################################################
+# Constructor
+
+#pod =pod
+#pod
+#pod =head2 new %args
+#pod
+#pod The constructor creates a new context object for the dependency algorithms to
+#pod act in. It takes as argument a series of options for creating the object.
+#pod
+#pod =over 4
+#pod
+#pod =item source => $Source
+#pod
+#pod The only compulsory option is the source of the dependency items. This is
+#pod an object of a subclass of L<Algorithm::Dependency::Source>. In practical terms,
+#pod this means you will create the source object before creating the
+#pod Algorithm::Dependency object.
+#pod
+#pod =item selected => [ 'A', 'B', 'C', etc... ]
+#pod
+#pod The C<selected> option provides a list of those items that have already been
+#pod 'selected', acted upon, installed, or whatever. If another item depends on one
+#pod in this list, we don't have to include it in the output of the C<schedule> or
+#pod C<depends> methods.
+#pod
+#pod =item ignore_orphans => 1
+#pod
+#pod Normally, the item source is expected to be largely perfect and error free.
+#pod An 'orphan' is an item name that appears as a dependency of another item, but
+#pod doesn't exist, or has been deleted.
+#pod
+#pod By providing the C<ignore_orphans> flag, orphans are simply ignored. Without
+#pod the C<ignore_orphans> flag, an error will be returned if an orphan is found.
+#pod
+#pod =back
+#pod
+#pod The C<new> constructor returns a new Algorithm::Dependency object on success,
+#pod or C<undef> on error.
+#pod
+#pod =cut
+
+sub new {
+	my $class  = shift;
+	my %args   = @_;
+	my $source = _INSTANCE($args{source}, 'Algorithm::Dependency::Source')
+		or return undef;
+
+	# Create the object
+	my $self = bless {
+		source   => $source, # Source object
+		selected => {},
+		}, $class;
+
+	# Were we given the 'ignore_orphans' flag?
+	if ( $args{ignore_orphans} ) {
+		$self->{ignore_orphans} = 1;
+	}
+
+	# Done, unless we have been given some selected items
+	_ARRAY($args{selected}) or return $self;
+
+	# Make sure each of the selected ids exists
+	my %selected = ();
+	foreach my $id ( @{ $args{selected} } ) {
+		# Does the item exist?
+		return undef unless $source->item($id);
+
+		# Is it a duplicate
+		return undef if $selected{$id};
+
+		# Add to the selected index
+		$selected{$id} = 1;
+	}
+
+	$self->{selected} = \%selected;
+	$self;
+}
+
+
+
+
+
+#####################################################################
+# Basic methods
+
+#pod =pod
+#pod
+#pod =head2 source
+#pod
+#pod The C<source> method retrieves the L<Algorithm::Dependency::Source> object
+#pod for the algorithm context.
+#pod
+#pod =cut
+
+sub source { $_[0]->{source} }
+
+#pod =pod
+#pod
+#pod =head2 selected_list
+#pod
+#pod The C<selected_list> method returns, as a list and in alphabetical order,
+#pod the list of the names of the selected items.
+#pod
+#pod =cut
+
+sub selected_list { sort keys %{$_[0]->{selected}} }
+
+#pod =pod
+#pod
+#pod =head2 selected $name
+#pod
+#pod Given an item name, the C<selected> method will return true if the item is
+#pod selected, false is not, or C<undef> if the item does not exist, or an error
+#pod occurs.
+#pod
+#pod =cut
+
+sub selected { $_[0]->{selected}->{$_[1]} }
+
+#pod =pod
+#pod
+#pod =head2 item $name
+#pod
+#pod The C<item> method fetches and returns the item object, as specified by the
+#pod name argument.
+#pod
+#pod Returns an L<Algorithm::Dependency::Item> object on success, or C<undef> if
+#pod an item does not exist for the argument provided.
+#pod
+#pod =cut
+
+sub item { $_[0]->{source}->item($_[1]) }
+
+
+
+
+
+#####################################################################
+# Main algorithm methods
+
+#pod =pod
+#pod
+#pod =head2 depends $name1, ..., $nameN
+#pod
+#pod Given a list of one or more item names, the C<depends> method will return
+#pod a reference to an array containing a list of the names of all the OTHER
+#pod items that also have to be selected to meet dependencies.
+#pod
+#pod That is, if item A depends on B and C then the C<depends> method would
+#pod return a reference to an array with B and C. ( C<[ 'B', 'C' ]> )
+#pod
+#pod If multiple item names are provided, the same applies. The list returned
+#pod will not contain duplicates.
+#pod
+#pod The method returns a reference to an array of item names on success, a
+#pod reference to an empty array if no other items are needed, or C<undef>
+#pod on error.
+#pod
+#pod NOTE: The result of C<depends> is ordered by an internal C<sort>
+#pod irrespective of the ordering provided by the dependency handler.  Use
+#pod L<Algorithm::Dependency::Ordered> and C<schedule> to use the most
+#pod common ordering (process sequence)
+#pod
+#pod =cut
+
+sub depends {
+	my $self    = shift;
+	my @stack   = @_ or return undef;
+	my @depends = ();
+	my %checked = ();
+
+	# Process the stack
+	while ( my $id = shift @stack ) {
+		# Does the id exist?
+		my $Item = $self->{source}->item($id)
+		or $self->{ignore_orphans} ? next : return undef;
+
+		# Skip if selected or checked
+		next if $checked{$id};
+
+		# Add its depends to the stack
+		push @stack, $Item->depends;
+		$checked{$id} = 1;
+
+		# Add anything to the final output that wasn't one of
+		# the original input.
+		unless ( scalar grep { $id eq $_ } @_ ) {
+			push @depends, $id;
+		}
+	}
+
+	# Remove any items already selected
+	my $s = $self->{selected};
+	return [ sort grep { ! $s->{$_} } @depends ];
+}
+
+#pod =pod
+#pod
+#pod =head2 schedule $name1, ..., $nameN
+#pod
+#pod Given a list of one or more item names, the C<depends> method will
+#pod return, as a reference to an array, the ordered list of items you
+#pod should act upon in whichever order this particular dependency handler
+#pod uses - see L<Algorithm::Dependency::Ordered> for one that implements
+#pod the most common ordering (process sequence).
+#pod
+#pod This would be the original names provided, plus those added to satisfy
+#pod dependencies, in the preferred order of action. For the normal algorithm,
+#pod where order it not important, this is alphabetical order. This makes it
+#pod easier for someone watching a program operate on the items to determine
+#pod how far you are through the task and makes any logs easier to read.
+#pod
+#pod If any of the names you provided in the arguments is already selected, it
+#pod will not be included in the list.
+#pod
+#pod The method returns a reference to an array of item names on success, a
+#pod reference to an empty array if no items need to be acted upon, or C<undef>
+#pod on error.
+#pod
+#pod =cut
+
+sub schedule {
+	my $self  = shift;
+	my @items = @_ or return undef;
+
+	# Get their dependencies
+	my $depends = $self->depends( @items ) or return undef;
+
+	# Now return a combined list, removing any items already selected.
+	# We are allowed to return an empty list.
+	my $s = $self->{selected};
+	return [ sort grep { ! $s->{$_} } @items, @$depends ];
+}
+
+#pod =pod
+#pod
+#pod =head2 schedule_all;
+#pod
+#pod The C<schedule_all> method acts the same as the C<schedule> method, but 
+#pod returns a schedule that selected all the so-far unselected items.
+#pod
+#pod =cut
+
+sub schedule_all {
+	my $self = shift;
+	$self->schedule( map { $_->id } $self->source->items );
+}
+
+1;
+
+__END__
 
 =pod
 
+=encoding UTF-8
+
 =head1 NAME
 
 Algorithm::Dependency - Base class for implementing various dependency trees
 
+=head1 VERSION
+
+version 1.112
+
 =head1 SYNOPSIS
 
+Typical Usage: Ordering based on dependency requirements
+
+  use Algorithm::Dependency::Ordered;
+  use Algorithm::Dependency::Source::HoA;
+  
+  my $deps = {
+    core  => [ ],
+    a     => [ 'core' ],
+    b     => [ 'a' ]
+    this  => [ ],
+    that  => [ ],
+  };
+  my $deps_source = Algorithm::Dependency::Source::HoA->new( $deps );
+
+  my $dep = Algorithm::Dependency::Ordered->new(
+    source   => $deps_source,
+    selected => [ 'this', 'that' ], # Items we have processed elsewhere or have already satisfied
+  )
+  or die 'Failed to set up dependency algorithm';
+
+  my $also = $dep->schedule_all();
+  # Returns: ['core', 'a', 'b'] -- ie: installation-order. Whereas using base
+  # Algorithm::Dependency would return sorted ['a', 'b', 'core']
+
+  my $also = $dep->schedule( 'b' );
+  # Returns: ['core', 'a', 'b'] -- installation order, including ourselves
+
+  my $also = $dep->depends( 'b' );
+  # Returns: ['a', 'core'] -- sorted order, not including ourselves
+
+Base Classes
+
   use Algorithm::Dependency;
   use Algorithm::Dependency::Source::File;
   
@@ -19,7 +443,7 @@ Algorithm::Dependency - Base class for i
   my $dep = Algorithm::Dependency->new(
       source   => $data_source,
       selected => [ 'This', 'That' ]
-      ) or die 'Failed to set up dependency algorithm';
+  ) or die 'Failed to set up dependency algorithm';
   
   # For the item 'Foo', find out the other things we also have to select.
   # This WON'T include the item we selected, 'Foo'.
@@ -36,11 +460,11 @@ Algorithm::Dependency - Base class for i
 =head1 DESCRIPTION
 
 Algorithm::Dependency is a framework for creating simple read-only
-dependency heirachies, where you have a set of items that rely on other
+dependency hierarchies, where you have a set of items that rely on other
 items in the set, and require actions on them as well.
 
 Despite the most visible of these being software installation systems like
-the CPAN installer, or debian apt-get, they are usefull in other situations.
+the CPAN installer, or Debian apt-get, they are useful in other situations.
 This module intentionally uses implementation-neutral words, to avoid
 confusion.
 
@@ -62,10 +486,12 @@ dynamically.
 
 =head2 General Description
 
+=for stopwords versioned
+
 Algorithm::Dependency implements algorithms relating to dependency
-heirachies. To use this framework, all you need is a source for the master
+hierarchies. To use this framework, all you need is a source for the master
 list of all the items, and a list of those already selected. If your
-dependency heirachy doesn't require the concept of items that are already
+dependency hierarchy doesn't require the concept of items that are already
 selected, simply don't pass anything to the constructor for it.
 
 Please note that the class Algorithm::Dependency does NOT implement an
@@ -75,13 +501,13 @@ it will not place B before A in the sche
 things like software installers, as they typically would need B to be
 installed before A, or the installation of A would fail.
 
-For dependency heirachies requiring the items to be acted on in a particular
+For dependency hierarchies requiring the items to be acted on in a particular
 order, either top down or bottom up, see L<Algorithm::Dependency::Ordered>.
 It should be more applicable for your needs. This is the the subclass you
 would probably use to implement a simple ( non-versioned ) package
-installation system. Please note that an ordered heirachy has additional
+installation system. Please note that an ordered hierarchy has additional
 constraints. For example, circular dependencies ARE legal in a
-non-ordered heirachy, but ARE NOT legal in an ordered heirachy.
+non-ordered hierarchy, but ARE NOT legal in an ordered hierarchy.
 
 =head2 Extending
 
@@ -91,28 +517,6 @@ a source for your particular use is in L
 
 =head1 METHODS
 
-=cut
-
-use 5.005;
-use strict;
-use Algorithm::Dependency::Item   ();
-use Algorithm::Dependency::Source ();
-use Params::Util qw{_INSTANCE _ARRAY};
-
-use vars qw{$VERSION};
-BEGIN {
-	$VERSION = '1.110';
-}
-
-
-
-
-
-#####################################################################
-# Constructor
-
-=pod
-
 =head2 new %args
 
 The constructor creates a new context object for the dependency algorithms to
@@ -148,88 +552,22 @@ the C<ignore_orphans> flag, an error wil
 The C<new> constructor returns a new Algorithm::Dependency object on success,
 or C<undef> on error.
 
-=cut
-
-sub new {
-	my $class  = shift;
-	my %args   = @_;
-	my $source = _INSTANCE($args{source}, 'Algorithm::Dependency::Source')
-		or return undef;
-
-	# Create the object
-	my $self = bless {
-		source   => $source, # Source object
-		selected => {},
-		}, $class;
-
-	# Were we given the 'ignore_orphans' flag?
-	if ( $args{ignore_orphans} ) {
-		$self->{ignore_orphans} = 1;
-	}
-
-	# Done, unless we have been given some selected items
-	_ARRAY($args{selected}) or return $self;
-
-	# Make sure each of the selected ids exists
-	my %selected = ();
-	foreach my $id ( @{ $args{selected} } ) {
-		# Does the item exist?
-		return undef unless $source->item($id);
-
-		# Is it a duplicate
-		return undef if $selected{$id};
-
-		# Add to the selected index
-		$selected{$id} = 1;
-	}
-
-	$self->{selected} = \%selected;
-	$self;
-}
-
-
-
-
-
-#####################################################################
-# Basic methods
-
-=pod
-
 =head2 source
 
 The C<source> method retrieves the L<Algorithm::Dependency::Source> object
 for the algorithm context.
 
-=cut
-
-sub source { $_[0]->{source} }
-
-=pod
-
 =head2 selected_list
 
 The C<selected_list> method returns, as a list and in alphabetical order,
 the list of the names of the selected items.
 
-=cut
-
-sub selected_list { sort keys %{$_[0]->{selected}} }
-
-=pod
-
 =head2 selected $name
 
 Given an item name, the C<selected> method will return true if the item is
 selected, false is not, or C<undef> if the item does not exist, or an error
 occurs.
 
-=cut
-
-sub selected { $_[0]->{selected}->{$_[1]} }
-
-=pod
-
 =head2 item $name
 
 The C<item> method fetches and returns the item object, as specified by the
@@ -238,19 +576,6 @@ name argument.
 Returns an L<Algorithm::Dependency::Item> object on success, or C<undef> if
 an item does not exist for the argument provided.
 
-=cut
-
-sub item { $_[0]->{source}->item($_[1]) }
-
-
-
-
-
-#####################################################################
-# Main algorithm methods
-
-=pod
-
 =head2 depends $name1, ..., $nameN
 
 Given a list of one or more item names, the C<depends> method will return
@@ -267,48 +592,21 @@ The method returns a reference to an arr
 reference to an empty array if no other items are needed, or C<undef>
 on error.
 
-=cut
-
-sub depends {
-	my $self    = shift;
-	my @stack   = @_ or return undef;
-	my @depends = ();
-	my %checked = ();
-
-	# Process the stack
-	while ( my $id = shift @stack ) {
-		# Does the id exist?
-		my $Item = $self->{source}->item($id)
-		or $self->{ignore_orphans} ? next : return undef;
-
-		# Skip if selected or checked
-		next if $checked{$id};
-
-		# Add its depends to the stack
-		push @stack, $Item->depends;
-		$checked{$id} = 1;
-
-		# Add anything to the final output that wasn't one of
-		# the original input.
-		unless ( scalar grep { $id eq $_ } @_ ) {
-			push @depends, $id;
-		}
-	}
-
-	# Remove any items already selected
-	my $s = $self->{selected};
-	return [ sort grep { ! $s->{$_} } @depends ];
-}
-
-=pod
+NOTE: The result of C<depends> is ordered by an internal C<sort>
+irrespective of the ordering provided by the dependency handler.  Use
+L<Algorithm::Dependency::Ordered> and C<schedule> to use the most
+common ordering (process sequence)
 
 =head2 schedule $name1, ..., $nameN
 
-Given a list of one or more item names, the C<depends> method will return,
-as a reference to an array, the ordered list of items you should act upon.
+Given a list of one or more item names, the C<depends> method will
+return, as a reference to an array, the ordered list of items you
+should act upon in whichever order this particular dependency handler
+uses - see L<Algorithm::Dependency::Ordered> for one that implements
+the most common ordering (process sequence).
 
 This would be the original names provided, plus those added to satisfy
-dependencies, in the prefered order of action. For the normal algorithm,
+dependencies, in the preferred order of action. For the normal algorithm,
 where order it not important, this is alphabetical order. This makes it
 easier for someone watching a program operate on the items to determine
 how far you are through the task and makes any logs easier to read.
@@ -320,39 +618,11 @@ The method returns a reference to an arr
 reference to an empty array if no items need to be acted upon, or C<undef>
 on error.
 
-=cut
-
-sub schedule {
-	my $self  = shift;
-	my @items = @_ or return undef;
-
-	# Get their dependencies
-	my $depends = $self->depends( @items ) or return undef;
-
-	# Now return a combined list, removing any items already selected.
-	# We are allowed to return an empty list.
-	my $s = $self->{selected};
-	return [ sort grep { ! $s->{$_} } @items, @$depends ];
-}
-
-=pod
-
 =head2 schedule_all;
 
 The C<schedule_all> method acts the same as the C<schedule> method, but 
 returns a schedule that selected all the so-far unselected items.
 
-=cut
-
-sub schedule_all {
-	my $self = shift;
-	$self->schedule( map { $_->id } $self->source->items );
-}
-
-1;
-
-=pod
-
 =head1 TO DO
 
 Add the C<check_source> method, to verify the integrity of the source.
@@ -364,31 +634,45 @@ Currently readonly. Make the whole thing
 used as the core of an actual dependency application, as opposed to just
 being a tool.
 
-=head1 SUPPORT
+=head1 SEE ALSO
 
-Bugs should be submitted via the CPAN bug tracker, located at
+L<Algorithm::Dependency::Ordered>, L<Algorithm::Dependency::Item>,
+L<Algorithm::Dependency::Source>, L<Algorithm::Dependency::Source::File>
 
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency>
+=head1 SUPPORT
 
-For general comments, contact the author.
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Dependency>
+(or L<bug-Algorithm-Dependency@rt.cpan.org|mailto:bug-Algorithm-Dependency@rt.cpan.org>).
 
 =head1 AUTHOR
 
-Adam Kennedy E<lt>adamk@cpan.orgE<gt>
+Adam Kennedy <adamk@cpan.org>
 
-=head1 SEE ALSO
+=head1 CONTRIBUTORS
 
-L<Algorithm::Dependency::Ordered>, L<Algorithm::Dependency::Item>,
-L<Algorithm::Dependency::Source>, L<Algorithm::Dependency::Source::File>
+=for stopwords Adam Kennedy Karen Etheridge Mark Murawski
 
-=head1 COPYRIGHT
+=over 4
+
+=item *
+
+Adam Kennedy <adam@ali.as>
+
+=item *
+
+Karen Etheridge <ether@cpan.org>
+
+=item *
+
+Mark Murawski <markm@intellasoft.net>
+
+=back
 
-Copyright 2003 - 2009 Adam Kennedy.
+=head1 COPYRIGHT AND LICENSE
 
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
+This software is copyright (c) 2003 by Adam Kennedy.
 
-The full text of the license can be found in the
-LICENSE file included with this module.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
 =cut
diff -pruN 1.110-1.3/t/00-report-prereqs.dd 1.112-1/t/00-report-prereqs.dd
--- 1.110-1.3/t/00-report-prereqs.dd	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/t/00-report-prereqs.dd	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,132 @@
+do { my $x = {
+       'configure' => {
+                        'requires' => {
+                                        'ExtUtils::MakeMaker' => '0',
+                                        'perl' => '5.006'
+                                      }
+                      },
+       'develop' => {
+                      'recommends' => {
+                                        'Dist::Zilla::PluginBundle::Author::ETHER' => '0.154',
+                                        'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007'
+                                      },
+                      'requires' => {
+                                      'Encode' => '0',
+                                      'File::Spec' => '0',
+                                      'IO::Handle' => '0',
+                                      'IPC::Open3' => '0',
+                                      'Pod::Coverage::TrustPod' => '0',
+                                      'Pod::Wordlist' => '0',
+                                      'Test::CPAN::Changes' => '0.19',
+                                      'Test::CPAN::Meta' => '0',
+                                      'Test::Kwalitee' => '1.21',
+                                      'Test::MinimumVersion' => '0',
+                                      'Test::Mojibake' => '0',
+                                      'Test::More' => '0.96',
+                                      'Test::Pod' => '1.41',
+                                      'Test::Pod::Coverage' => '1.08',
+                                      'Test::Pod::No404s' => '0',
+                                      'Test::Portability::Files' => '0',
+                                      'Test::Spelling' => '0.12',
+                                      'perl' => '5.006',
+                                      'warnings' => '0'
+                                    }
+                    },
+       'runtime' => {
+                      'requires' => {
+                                      'List::Util' => '1.11',
+                                      'Params::Util' => '0.31',
+                                      'perl' => '5.006',
+                                      'strict' => '0'
+                                    }
+                    },
+       'test' => {
+                   'recommends' => {
+                                     'CPAN::Meta' => '2.120900'
+                                   },
+                   'requires' => {
+                                   'ExtUtils::MakeMaker' => '0',
+                                   'File::Spec' => '0.80',
+                                   'File::Spec::Functions' => '0',
+                                   'Test::ClassAPI' => '0.6',
+                                   'Test::More' => '0.47',
+                                   'perl' => '5.006',
+                                   'warnings' => '0'
+                                 }
+                 },
+       'x_Dist_Zilla' => {
+                           'requires' => {
+                                           'Dist::Zilla' => '5',
+                                           'Dist::Zilla::Plugin::Authority' => '1.009',
+                                           'Dist::Zilla::Plugin::AutoMetaResources' => '0',
+                                           'Dist::Zilla::Plugin::AutoPrereqs' => '5.038',
+                                           'Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional' => '0.004',
+                                           'Dist::Zilla::Plugin::CheckIssues' => '0',
+                                           'Dist::Zilla::Plugin::CheckMetaResources' => '0',
+                                           'Dist::Zilla::Plugin::CheckPrereqsIndexed' => '0.019',
+                                           'Dist::Zilla::Plugin::CheckSelfDependency' => '0',
+                                           'Dist::Zilla::Plugin::CheckStrictVersion' => '0',
+                                           'Dist::Zilla::Plugin::ConfirmRelease' => '0',
+                                           'Dist::Zilla::Plugin::CopyFilesFromRelease' => '0',
+                                           'Dist::Zilla::Plugin::EnsureLatestPerl' => '0',
+                                           'Dist::Zilla::Plugin::FileFinder::ByName' => '0',
+                                           'Dist::Zilla::Plugin::GenerateFile::FromShareDir' => '0',
+                                           'Dist::Zilla::Plugin::Git::Check' => '0',
+                                           'Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch' => '0.004',
+                                           'Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts' => '0',
+                                           'Dist::Zilla::Plugin::Git::Commit' => '2.020',
+                                           'Dist::Zilla::Plugin::Git::Contributors' => '0.029',
+                                           'Dist::Zilla::Plugin::Git::Describe' => '0.004',
+                                           'Dist::Zilla::Plugin::Git::GatherDir' => '2.016',
+                                           'Dist::Zilla::Plugin::Git::Push' => '0',
+                                           'Dist::Zilla::Plugin::Git::Remote::Check' => '0',
+                                           'Dist::Zilla::Plugin::Git::Tag' => '0',
+                                           'Dist::Zilla::Plugin::GitHub::Update' => '0.40',
+                                           'Dist::Zilla::Plugin::GithubMeta' => '0.54',
+                                           'Dist::Zilla::Plugin::InstallGuide' => '1.200005',
+                                           'Dist::Zilla::Plugin::Keywords' => '0.004',
+                                           'Dist::Zilla::Plugin::License' => '5.038',
+                                           'Dist::Zilla::Plugin::MakeMaker' => '0',
+                                           'Dist::Zilla::Plugin::Manifest' => '0',
+                                           'Dist::Zilla::Plugin::MetaConfig' => '0',
+                                           'Dist::Zilla::Plugin::MetaJSON' => '0',
+                                           'Dist::Zilla::Plugin::MetaNoIndex' => '0',
+                                           'Dist::Zilla::Plugin::MetaProvides::Package' => '1.15000002',
+                                           'Dist::Zilla::Plugin::MetaTests' => '0',
+                                           'Dist::Zilla::Plugin::MetaYAML' => '0',
+                                           'Dist::Zilla::Plugin::MinimumPerl' => '1.006',
+                                           'Dist::Zilla::Plugin::MojibakeTests' => '0.8',
+                                           'Dist::Zilla::Plugin::NextRelease' => '5.033',
+                                           'Dist::Zilla::Plugin::PodCoverageTests' => '5.040',
+                                           'Dist::Zilla::Plugin::PodSyntaxTests' => '5.040',
+                                           'Dist::Zilla::Plugin::PodWeaver' => '4.005',
+                                           'Dist::Zilla::Plugin::Prereqs' => '0',
+                                           'Dist::Zilla::Plugin::Prereqs::AuthorDeps' => '0.006',
+                                           'Dist::Zilla::Plugin::PromptIfStale' => '0',
+                                           'Dist::Zilla::Plugin::Readme' => '0',
+                                           'Dist::Zilla::Plugin::ReadmeAnyFromPod' => '0.142180',
+                                           'Dist::Zilla::Plugin::RewriteVersion::Transitional' => '0.004',
+                                           'Dist::Zilla::Plugin::Run::AfterBuild' => '0.041',
+                                           'Dist::Zilla::Plugin::Run::AfterRelease' => '0.038',
+                                           'Dist::Zilla::Plugin::RunExtraTests' => '0.024',
+                                           'Dist::Zilla::Plugin::StaticInstall' => '0.005',
+                                           'Dist::Zilla::Plugin::Test::CPAN::Changes' => '0.012',
+                                           'Dist::Zilla::Plugin::Test::ChangesHasContent' => '0',
+                                           'Dist::Zilla::Plugin::Test::Compile' => '2.039',
+                                           'Dist::Zilla::Plugin::Test::Kwalitee' => '2.10',
+                                           'Dist::Zilla::Plugin::Test::MinimumVersion' => '2.000010',
+                                           'Dist::Zilla::Plugin::Test::Pod::No404s' => '1.003',
+                                           'Dist::Zilla::Plugin::Test::PodSpelling' => '2.006003',
+                                           'Dist::Zilla::Plugin::Test::Portability' => '2.000007',
+                                           'Dist::Zilla::Plugin::Test::ReportPrereqs' => '0.022',
+                                           'Dist::Zilla::Plugin::TestRelease' => '0',
+                                           'Dist::Zilla::Plugin::UploadToCPAN' => '0',
+                                           'Dist::Zilla::Plugin::UseUnsafeInc' => '0',
+                                           'Dist::Zilla::PluginBundle::Author::ETHER' => '0.119',
+                                           'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007',
+                                           'Software::License::Perl_5' => '0'
+                                         }
+                         }
+     };
+  $x;
+ }
\ No newline at end of file
diff -pruN 1.110-1.3/t/00-report-prereqs.t 1.112-1/t/00-report-prereqs.t
--- 1.110-1.3/t/00-report-prereqs.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/t/00-report-prereqs.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,200 @@
+#!perl
+
+use strict;
+use warnings;
+
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.027
+
+use Test::More tests => 1;
+
+use ExtUtils::MakeMaker;
+use File::Spec;
+
+# from $version::LAX
+my $lax_version_re =
+    qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
+            |
+            (?:\.[0-9]+) (?:_[0-9]+)?
+        ) | (?:
+            v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
+            |
+            (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
+        )
+    )/x;
+
+# hide optional CPAN::Meta modules from prereq scanner
+# and check if they are available
+my $cpan_meta = "CPAN::Meta";
+my $cpan_meta_pre = "CPAN::Meta::Prereqs";
+my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic
+
+# Verify requirements?
+my $DO_VERIFY_PREREQS = 1;
+
+sub _max {
+    my $max = shift;
+    $max = ( $_ > $max ) ? $_ : $max for @_;
+    return $max;
+}
+
+sub _merge_prereqs {
+    my ($collector, $prereqs) = @_;
+
+    # CPAN::Meta::Prereqs object
+    if (ref $collector eq $cpan_meta_pre) {
+        return $collector->with_merged_prereqs(
+            CPAN::Meta::Prereqs->new( $prereqs )
+        );
+    }
+
+    # Raw hashrefs
+    for my $phase ( keys %$prereqs ) {
+        for my $type ( keys %{ $prereqs->{$phase} } ) {
+            for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
+                $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
+            }
+        }
+    }
+
+    return $collector;
+}
+
+my @include = qw(
+  Encode
+  File::Temp
+  JSON::PP
+  Module::Runtime
+  Pod::Coverage
+  Sub::Name
+  YAML
+  autodie
+);
+
+my @exclude = qw(
+
+);
+
+# Add static prereqs to the included modules list
+my $static_prereqs = do './t/00-report-prereqs.dd';
+
+# Merge all prereqs (either with ::Prereqs or a hashref)
+my $full_prereqs = _merge_prereqs(
+    ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
+    $static_prereqs
+);
+
+# Add dynamic prereqs to the included modules list (if we can)
+my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
+my $cpan_meta_error;
+if ( $source && $HAS_CPAN_META
+    && (my $meta = eval { CPAN::Meta->load_file($source) } )
+) {
+    $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
+}
+else {
+    $cpan_meta_error = $@;    # capture error from CPAN::Meta->load_file($source)
+    $source = 'static metadata';
+}
+
+my @full_reports;
+my @dep_errors;
+my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;
+
+# Add static includes into a fake section
+for my $mod (@include) {
+    $req_hash->{other}{modules}{$mod} = 0;
+}
+
+for my $phase ( qw(configure build test runtime develop other) ) {
+    next unless $req_hash->{$phase};
+    next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});
+
+    for my $type ( qw(requires recommends suggests conflicts modules) ) {
+        next unless $req_hash->{$phase}{$type};
+
+        my $title = ucfirst($phase).' '.ucfirst($type);
+        my @reports = [qw/Module Want Have/];
+
+        for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
+            next if $mod eq 'perl';
+            next if grep { $_ eq $mod } @exclude;
+
+            my $file = $mod;
+            $file =~ s{::}{/}g;
+            $file .= ".pm";
+            my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;
+
+            my $want = $req_hash->{$phase}{$type}{$mod};
+            $want = "undef" unless defined $want;
+            $want = "any" if !$want && $want == 0;
+
+            my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";
+
+            if ($prefix) {
+                my $have = MM->parse_version( File::Spec->catfile($prefix, $file) );
+                $have = "undef" unless defined $have;
+                push @reports, [$mod, $want, $have];
+
+                if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
+                    if ( $have !~ /\A$lax_version_re\z/ ) {
+                        push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
+                    }
+                    elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
+                        push @dep_errors, "$mod version '$have' is not in required range '$want'";
+                    }
+                }
+            }
+            else {
+                push @reports, [$mod, $want, "missing"];
+
+                if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
+                    push @dep_errors, "$mod is not installed ($req_string)";
+                }
+            }
+        }
+
+        if ( @reports ) {
+            push @full_reports, "=== $title ===\n\n";
+
+            my $ml = _max( map { length $_->[0] } @reports );
+            my $wl = _max( map { length $_->[1] } @reports );
+            my $hl = _max( map { length $_->[2] } @reports );
+
+            if ($type eq 'modules') {
+                splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl];
+                push @full_reports, map { sprintf("    %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports;
+            }
+            else {
+                splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
+                push @full_reports, map { sprintf("    %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
+            }
+
+            push @full_reports, "\n";
+        }
+    }
+}
+
+if ( @full_reports ) {
+    diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
+}
+
+if ( $cpan_meta_error || @dep_errors ) {
+    diag "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n";
+}
+
+if ( $cpan_meta_error ) {
+    my ($orig_source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
+    diag "\nCPAN::Meta->load_file('$orig_source') failed with: $cpan_meta_error\n";
+}
+
+if ( @dep_errors ) {
+    diag join("\n",
+        "\nThe following REQUIRED prerequisites were not satisfied:\n",
+        @dep_errors,
+        "\n"
+    );
+}
+
+pass;
+
+# vim: ts=4 sts=4 sw=4 et:
diff -pruN 1.110-1.3/t/01_compile.t 1.112-1/t/01_compile.t
--- 1.110-1.3/t/01_compile.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/01_compile.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # Basic load and method existance tests for Algorithm::Dependency
 
 use strict;
diff -pruN 1.110-1.3/t/02_api.t 1.112-1/t/02_api.t
--- 1.110-1.3/t/02_api.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/02_api.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # API Testing for Algorithm::Dependency
 
 use strict;
diff -pruN 1.110-1.3/t/03_basics.t 1.112-1/t/03_basics.t
--- 1.110-1.3/t/03_basics.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/03_basics.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # Creating and using dependency trees
 
 use strict;
@@ -139,6 +137,3 @@ isa_ok( $Missing, 'Algorithm::Dependency
 ok( eval {$Missing->load;}, "Missing ->load returns true" );
 
 is_deeply( $Missing->missing_dependencies, [ 'C', 'E' ], "->missing_dependencies returns as expected when something missing" );
-
-1;
-
diff -pruN 1.110-1.3/t/04_complex.t 1.112-1/t/04_complex.t
--- 1.110-1.3/t/04_complex.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/04_complex.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # More complex dependency trees
 
 use strict;
diff -pruN 1.110-1.3/t/05_ordered.t 1.112-1/t/05_ordered.t
--- 1.110-1.3/t/05_ordered.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/05_ordered.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # Ordered dependency trees
 
 use strict;
diff -pruN 1.110-1.3/t/06_ignore_orphans.t 1.112-1/t/06_ignore_orphans.t
--- 1.110-1.3/t/06_ignore_orphans.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/06_ignore_orphans.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # Check that errors are correctly ignored when the 'ignore_orphans' option
 # is turned on.
 
diff -pruN 1.110-1.3/t/07_hoa.t 1.112-1/t/07_hoa.t
--- 1.110-1.3/t/07_hoa.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/07_hoa.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # Tests for Algorithm::Dependency::HoA
 # Pretty much just copied from the 03_basics.t tests
 
diff -pruN 1.110-1.3/t/08_weight.t 1.112-1/t/08_weight.t
--- 1.110-1.3/t/08_weight.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/08_weight.t	2020-04-28 03:15:31.000000000 +0000
@@ -1,5 +1,3 @@
-#!/usr/bin/perl
-
 # Creating and using dependency trees
 
 use strict;
diff -pruN 1.110-1.3/t/97_meta.t 1.112-1/t/97_meta.t
--- 1.110-1.3/t/97_meta.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/97_meta.t	1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-
-# Test that our META.yml file matches the current specification.
-
-use strict;
-BEGIN {
-	$|  = 1;
-	$^W = 1;
-}
-
-my $MODULE = 'Test::CPAN::Meta 0.12';
-
-# Don't run tests for installs
-use Test::More;
-unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) {
-	plan( skip_all => "Author tests not required for installation" );
-}
-
-# Load the testing module
-eval "use $MODULE";
-if ( $@ ) {
-	$ENV{RELEASE_TESTING}
-	? die( "Failed to load required release-testing module $MODULE" )
-	: plan( skip_all => "$MODULE not available for testing" );
-}
-
-meta_yaml_ok();
diff -pruN 1.110-1.3/t/98_pod.t 1.112-1/t/98_pod.t
--- 1.110-1.3/t/98_pod.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/98_pod.t	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-#!/usr/bin/perl
-
-# Test that the syntax of our POD documentation is valid
-
-use strict;
-BEGIN {
-	$|  = 1;
-	$^W = 1;
-}
-
-my @MODULES = (
-	'Pod::Simple 3.07',
-	'Test::Pod 1.26',
-);
-
-# Don't run tests for installs
-use Test::More;
-unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) {
-	plan( skip_all => "Author tests not required for installation" );
-}
-
-# Load the testing modules
-foreach my $MODULE ( @MODULES ) {
-	eval "use $MODULE";
-	if ( $@ ) {
-		$ENV{RELEASE_TESTING}
-		? die( "Failed to load required release-testing module $MODULE" )
-		: plan( skip_all => "$MODULE not available for testing" );
-	}
-}
-
-all_pod_files_ok();
diff -pruN 1.110-1.3/t/99_pmv.t 1.112-1/t/99_pmv.t
--- 1.110-1.3/t/99_pmv.t	2009-04-14 09:15:38.000000000 +0000
+++ 1.112-1/t/99_pmv.t	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-#!/usr/bin/perl
-
-# Test that our declared minimum Perl version matches our syntax
-
-use strict;
-BEGIN {
-	$|  = 1;
-	$^W = 1;
-}
-
-my @MODULES = (
-	'Perl::MinimumVersion 1.20',
-	'Test::MinimumVersion 0.008',
-);
-
-# Don't run tests for installs
-use Test::More;
-unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) {
-	plan( skip_all => "Author tests not required for installation" );
-}
-
-# Load the testing modules
-foreach my $MODULE ( @MODULES ) {
-	eval "use $MODULE";
-	if ( $@ ) {
-		$ENV{RELEASE_TESTING}
-		? die( "Failed to load required release-testing module $MODULE" )
-		: plan( skip_all => "$MODULE not available for testing" );
-	}
-}
-
-all_minimum_version_from_metayml_ok();
diff -pruN 1.110-1.3/xt/author/00-compile.t 1.112-1/xt/author/00-compile.t
--- 1.110-1.3/xt/author/00-compile.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/00-compile.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,67 @@
+use 5.006;
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058
+
+use Test::More 0.94;
+
+plan tests => 9;
+
+my @module_files = (
+    'Algorithm/Dependency.pm',
+    'Algorithm/Dependency/Item.pm',
+    'Algorithm/Dependency/Ordered.pm',
+    'Algorithm/Dependency/Source.pm',
+    'Algorithm/Dependency/Source/File.pm',
+    'Algorithm/Dependency/Source/HoA.pm',
+    'Algorithm/Dependency/Source/Invert.pm',
+    'Algorithm/Dependency/Weight.pm'
+);
+
+
+
+# no fake home requested
+
+my @switches = (
+    -d 'blib' ? '-Mblib' : '-Ilib',
+);
+
+use File::Spec;
+use IPC::Open3;
+use IO::Handle;
+
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+
+my @warnings;
+for my $lib (@module_files)
+{
+    # see L<perlfaq8/How can I capture STDERR from an external command?>
+    my $stderr = IO::Handle->new;
+
+    diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
+            $^X, @switches, '-e', "require q[$lib]"))
+        if $ENV{PERL_COMPILE_TEST_DEBUG};
+
+    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]");
+    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+    my @_warnings = <$stderr>;
+    waitpid($pid, 0);
+    is($?, 0, "$lib loaded ok");
+
+    shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/
+        and not eval { +require blib; blib->VERSION('1.01') };
+
+    if (@_warnings)
+    {
+        warn @_warnings;
+        push @warnings, @_warnings;
+    }
+}
+
+
+
+is(scalar(@warnings), 0, 'no warnings found')
+    or diag 'got warnings: ', explain(\@warnings);
+
+BAIL_OUT("Compilation problems") if !Test::More->builder->is_passing;
diff -pruN 1.110-1.3/xt/author/changes_has_content.t 1.112-1/xt/author/changes_has_content.t
--- 1.110-1.3/xt/author/changes_has_content.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/changes_has_content.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+
+use Test::More;
+plan skip_all => 'xt/release/changes_has_content.t is missing' if not -e 'xt/release/changes_has_content.t';
+
+# skip for master branch, only for travis
+if (($ENV{TRAVIS_PULL_REQUEST} || '') eq 'false') {
+    chomp(my $branch_name = ($ENV{TRAVIS_BRANCH} || `git rev-parse --abbrev-ref HEAD`));
+    $TODO = 'Changes need not have content for this release yet if this is only the '.$1.' branch'
+        if ($branch_name || '') =~ /^(master|devel)$/;
+}
+
+do './xt/release/changes_has_content.t';
+die $@ if $@;
diff -pruN 1.110-1.3/xt/author/kwalitee.t 1.112-1/xt/author/kwalitee.t
--- 1.110-1.3/xt/author/kwalitee.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/kwalitee.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,9 @@
+# this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.12
+use strict;
+use warnings;
+use Test::More 0.88;
+use Test::Kwalitee 1.21 'kwalitee_ok';
+
+kwalitee_ok();
+
+done_testing;
diff -pruN 1.110-1.3/xt/author/minimum-version.t 1.112-1/xt/author/minimum-version.t
--- 1.110-1.3/xt/author/minimum-version.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/minimum-version.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,6 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::MinimumVersion;
+all_minimum_version_ok( qq{5.006} );
diff -pruN 1.110-1.3/xt/author/mojibake.t 1.112-1/xt/author/mojibake.t
--- 1.110-1.3/xt/author/mojibake.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/mojibake.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,9 @@
+#!perl
+
+use strict;
+use warnings qw(all);
+
+use Test::More;
+use Test::Mojibake;
+
+all_files_encoding_ok();
diff -pruN 1.110-1.3/xt/author/pod-coverage.t 1.112-1/xt/author/pod-coverage.t
--- 1.110-1.3/xt/author/pod-coverage.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/pod-coverage.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,7 @@
+#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests.
+
+use Test::Pod::Coverage 1.08;
+use Pod::Coverage::TrustPod;
+
+all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
diff -pruN 1.110-1.3/xt/author/pod-no404s.t 1.112-1/xt/author/pod-no404s.t
--- 1.110-1.3/xt/author/pod-no404s.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/pod-no404s.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,21 @@
+#!perl
+
+use strict;
+use warnings;
+use Test::More;
+
+foreach my $env_skip ( qw(
+  SKIP_POD_NO404S
+  AUTOMATED_TESTING
+) ){
+  plan skip_all => "\$ENV{$env_skip} is set, skipping"
+    if $ENV{$env_skip};
+}
+
+eval "use Test::Pod::No404s";
+if ( $@ ) {
+  plan skip_all => 'Test::Pod::No404s required for testing POD';
+}
+else {
+  all_pod_files_ok();
+}
diff -pruN 1.110-1.3/xt/author/pod-spell.t 1.112-1/xt/author/pod-spell.t
--- 1.110-1.3/xt/author/pod-spell.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/pod-spell.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,37 @@
+use strict;
+use warnings;
+use Test::More;
+
+# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007005
+use Test::Spelling 0.12;
+use Pod::Wordlist;
+
+
+add_stopwords(<DATA>);
+all_pod_files_spelling_ok( qw( examples lib script t xt ) );
+__DATA__
+ARRAYs
+Adam
+Algorithm
+Dependency
+Etheridge
+File
+HoA
+Invert
+Item
+Karen
+Kennedy
+Mark
+Murawski
+Ordered
+Source
+Weight
+adam
+adamk
+ether
+irc
+lib
+markm
+param
+readonly
+unselected
diff -pruN 1.110-1.3/xt/author/pod-syntax.t 1.112-1/xt/author/pod-syntax.t
--- 1.110-1.3/xt/author/pod-syntax.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/pod-syntax.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,7 @@
+#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
+use strict; use warnings;
+use Test::More;
+use Test::Pod 1.41;
+
+all_pod_files_ok();
diff -pruN 1.110-1.3/xt/author/portability.t 1.112-1/xt/author/portability.t
--- 1.110-1.3/xt/author/portability.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/author/portability.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,10 @@
+use strict;
+use warnings;
+
+use Test::More;
+
+eval 'use Test::Portability::Files';
+plan skip_all => 'Test::Portability::Files required for testing portability'
+    if $@;
+
+run_tests();
diff -pruN 1.110-1.3/xt/release/changes_has_content.t 1.112-1/xt/release/changes_has_content.t
--- 1.110-1.3/xt/release/changes_has_content.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/release/changes_has_content.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,42 @@
+use Test::More tests => 2;
+
+note 'Checking Changes';
+my $changes_file = 'Changes';
+my $newver = '1.112';
+my $trial_token = '-TRIAL';
+my $encoding = 'UTF-8';
+
+SKIP: {
+    ok(-e $changes_file, "$changes_file file exists")
+        or skip 'Changes is missing', 1;
+
+    ok(_get_changes($newver), "$changes_file has content for $newver");
+}
+
+done_testing;
+
+sub _get_changes
+{
+    my $newver = shift;
+
+    # parse changelog to find commit message
+    open(my $fh, '<', $changes_file) or die "cannot open $changes_file: $!";
+    my $changelog = join('', <$fh>);
+    if ($encoding) {
+        require Encode;
+        $changelog = Encode::decode($encoding, $changelog, Encode::FB_CROAK());
+    }
+    close $fh;
+
+    my @content =
+        grep { /^$newver(?:$trial_token)?(?:\s+|$)/ ... /^\S/ } # from newver to un-indented
+        split /\n/, $changelog;
+    shift @content; # drop the version line
+
+    # drop unindented last line and trailing blank lines
+    pop @content while ( @content && $content[-1] =~ /^(?:\S|\s*$)/ );
+
+    # return number of non-blank lines
+    return scalar @content;
+}
+
diff -pruN 1.110-1.3/xt/release/cpan-changes.t 1.112-1/xt/release/cpan-changes.t
--- 1.110-1.3/xt/release/cpan-changes.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/release/cpan-changes.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,10 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::CPAN::Changes 0.012
+
+use Test::More 0.96 tests => 1;
+use Test::CPAN::Changes;
+subtest 'changes_ok' => sub {
+    changes_file_ok('Changes');
+};
diff -pruN 1.110-1.3/xt/release/distmeta.t 1.112-1/xt/release/distmeta.t
--- 1.110-1.3/xt/release/distmeta.t	1970-01-01 00:00:00.000000000 +0000
+++ 1.112-1/xt/release/distmeta.t	2020-04-28 03:15:31.000000000 +0000
@@ -0,0 +1,6 @@
+#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::MetaTests.
+
+use Test::CPAN::Meta;
+
+meta_yaml_ok();
