The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 07
INSTALL 10
LICENSE 44
MANIFEST 48
META.json 14587
META.yml 21454
Makefile.PL 1113
README 3120
README.md 0337
dist.ini 11
lib/Exception/Class/Base.pm 3848
lib/Exception/Class.pm 2836
t/00-compile.t 5937
t/00-report-prereqs.dd 047
t/00-report-prereqs.t 0176
t/author-eol.t 016
t/author-no-tabs.t 041
t/author-pod-spell.t 611
t/basic.t 420
t/release-cpan-changes.t 48
t/release-eol.t 160
t/release-no-tabs.t 380
t/release-pod-coverage.t 230
t/release-portability.t 019
t/release-synopsis.t 41
weaver.ini 017
26 files changed (This is a version diff) 5671918
@@ -1,3 +1,10 @@
+1.39    2014-11-01
+
+- Replaced the Exception::Class::Base->NoRefs method with UnsafeRefCapture to
+  match changes in Devel::StackTrace 2.00. The old method is deprecated but
+  will continue to work.
+
+
 1.38    2014-05-05
 
 - An exception without a message will now default to either the associated
@@ -1,4 +1,3 @@
-
 This is the Perl distribution Exception-Class.
 
 Installing Exception-Class is straightforward.
@@ -1,4 +1,4 @@
-This software is copyright (c) 2014 by Dave Rolsky.
+This software is copyright (c) 2014 by David Rolsky.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@ b) the "Artistic License"
 
 --- The GNU General Public License, Version 1, February 1989 ---
 
-This software is Copyright (c) 2014 by Dave Rolsky.
+This software is Copyright (c) 2014 by David Rolsky.
 
 This is free software, licensed under:
 
@@ -22,7 +22,7 @@ This is free software, licensed under:
                      Version 1, February 1989
 
  Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Suite 500, Boston, MA  02110-1335  USA
+ 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.
@@ -272,7 +272,7 @@ That's all there is to it!
 
 --- The Artistic License 1.0 ---
 
-This software is Copyright (c) 2014 by Dave Rolsky.
+This software is Copyright (c) 2014 by David Rolsky.
 
 This is free software, licensed under:
 
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.015.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.023.
 Changes
 INSTALL
 LICENSE
@@ -6,12 +6,16 @@ MANIFEST
 META.json
 META.yml
 Makefile.PL
-README
+README.md
 bench/simple
 dist.ini
 lib/Exception/Class.pm
 lib/Exception/Class/Base.pm
 t/00-compile.t
+t/00-report-prereqs.dd
+t/00-report-prereqs.t
+t/author-eol.t
+t/author-no-tabs.t
 t/author-pod-spell.t
 t/basic.t
 t/caught.t
@@ -19,10 +23,10 @@ t/context.t
 t/ecb-standalone.t
 t/ignore.t
 t/release-cpan-changes.t
-t/release-eol.t
-t/release-no-tabs.t
 t/release-pod-coverage.t
 t/release-pod-linkcheck.t
 t/release-pod-no404s.t
 t/release-pod-syntax.t
+t/release-portability.t
 t/release-synopsis.t
+weaver.ini
@@ -4,7 +4,7 @@
       "Dave Rolsky <autarch@urth.org>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 5.015, CPAN::Meta::Converter version 2.120921",
+   "generated_by" : "Dist::Zilla version 5.023, CPAN::Meta::Converter version 2.142690",
    "license" : [
       "perl_5"
    ],
@@ -16,22 +16,26 @@
    "prereqs" : {
       "configure" : {
          "requires" : {
-            "ExtUtils::MakeMaker" : "6.30"
+            "ExtUtils::MakeMaker" : "0"
          }
       },
       "develop" : {
          "requires" : {
             "Pod::Coverage::TrustPod" : "0",
-            "Test::More" : "0",
+            "Test::CPAN::Changes" : "0.19",
+            "Test::EOL" : "0",
+            "Test::More" : "0.88",
             "Test::NoTabs" : "0",
             "Test::Pod" : "1.41",
-            "Test::Pod::Coverage" : "1.08"
+            "Test::Pod::Coverage" : "1.08",
+            "Test::Spelling" : "0.12",
+            "Test::Synopsis" : "0"
          }
       },
       "runtime" : {
          "requires" : {
             "Class::Data::Inheritable" : "0.02",
-            "Devel::StackTrace" : "1.20",
+            "Devel::StackTrace" : "2.00",
             "Scalar::Util" : "0",
             "base" : "0",
             "overload" : "0",
@@ -41,15 +45,29 @@
          }
       },
       "test" : {
+         "recommends" : {
+            "CPAN::Meta" : "2.120900"
+         },
          "requires" : {
-            "File::Find" : "0",
+            "ExtUtils::MakeMaker" : "0",
             "File::Spec" : "0",
-            "File::Temp" : "0",
+            "IO::Handle" : "0",
+            "IPC::Open3" : "0",
             "Test::More" : "0.88",
             "vars" : "0"
          }
       }
    },
+   "provides" : {
+      "Exception::Class" : {
+         "file" : "lib/Exception/Class.pm",
+         "version" : "1.39"
+      },
+      "Exception::Class::Base" : {
+         "file" : "lib/Exception/Class/Base.pm",
+         "version" : "1.39"
+      }
+   },
    "release_status" : "stable",
    "resources" : {
       "bugtracker" : {
@@ -59,17 +77,572 @@
       "homepage" : "http://metacpan.org/release/Test-Bits",
       "repository" : {
          "type" : "git",
-         "url" : "git://git.urth.org/Test-Bits.git",
-         "web" : "http://git.urth.org/Test-Bits.git"
+         "url" : "git://github.com/autarch/Exception-Class.git",
+         "web" : "https://github.com/autarch/Exception-Class"
+      }
+   },
+   "version" : "1.39",
+   "x_Dist_Zilla" : {
+      "perl" : {
+         "version" : "5.016003"
+      },
+      "plugins" : [
+         {
+            "class" : "Dist::Zilla::Plugin::MakeMaker",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 1
+               }
+            },
+            "name" : "@DROLSKY/MakeMaker",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Authority",
+            "name" : "@DROLSKY/Authority",
+            "version" : "1.009"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::AutoPrereqs",
+            "name" : "@DROLSKY/AutoPrereqs",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GatherDir",
+            "config" : {
+               "Dist::Zilla::Plugin::GatherDir" : {
+                  "exclude_filename" : [
+                     "README.md"
+                  ],
+                  "exclude_match" : [],
+                  "follow_symlinks" : "0",
+                  "include_dotfiles" : "0",
+                  "prefix" : "",
+                  "prune_directory" : [],
+                  "root" : "."
+               }
+            },
+            "name" : "@DROLSKY/GatherDir",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GitHub::Meta",
+            "name" : "@DROLSKY/GitHub::Meta",
+            "version" : "0.38"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::GitHub::Update",
+            "name" : "@DROLSKY/GitHub::Update",
+            "version" : "0.38"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaResources",
+            "name" : "@DROLSKY/MetaResources",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
+            "config" : {
+               "Dist::Zilla::Plugin::MetaProvides::Package" : {
+                  "finder_objects" : [
+                     {
+                        "class" : "Dist::Zilla::Plugin::FinderCode",
+                        "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
+                        "version" : "5.023"
+                     }
+                  ]
+               },
+               "Dist::Zilla::Role::MetaProvider::Provider" : {
+                  "inherit_missing" : "1",
+                  "inherit_version" : "1",
+                  "meta_noindex" : "1"
+               }
+            },
+            "name" : "@DROLSKY/MetaProvides::Package",
+            "version" : "2.001002"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::NextRelease",
+            "name" : "@DROLSKY/NextRelease",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PkgVersion",
+            "name" : "@DROLSKY/PkgVersion",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "test",
+                  "type" : "requires"
+               }
+            },
+            "name" : "@DROLSKY/TestMoreDoneTesting",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PromptIfStale",
+            "config" : {
+               "Dist::Zilla::Plugin::PromptIfStale" : {
+                  "check_all_plugins" : "1",
+                  "check_all_prereqs" : "1",
+                  "modules" : [],
+                  "phase" : "release",
+                  "skip" : []
+               }
+            },
+            "name" : "@DROLSKY/stale modules, release",
+            "version" : "0.028"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
+            "name" : "@DROLSKY/ReadmeMarkdownInBuild",
+            "version" : "0.142470"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
+            "name" : "@DROLSKY/ReadmeMarkdownInRoot",
+            "version" : "0.142470"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable",
+            "name" : "@DROLSKY/Test::Pod::Coverage::Configurable",
+            "version" : "0.01"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::PodSpelling",
+            "name" : "@DROLSKY/Test::PodSpelling",
+            "version" : "2.006008"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
+            "name" : "@DROLSKY/Test::ReportPrereqs",
+            "version" : "0.019"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PruneCruft",
+            "name" : "@DROLSKY/PruneCruft",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ManifestSkip",
+            "name" : "@DROLSKY/ManifestSkip",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaYAML",
+            "name" : "@DROLSKY/MetaYAML",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::License",
+            "name" : "@DROLSKY/License",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ExtraTests",
+            "name" : "@DROLSKY/ExtraTests",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ExecDir",
+            "name" : "@DROLSKY/ExecDir",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ShareDir",
+            "name" : "@DROLSKY/ShareDir",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Manifest",
+            "name" : "@DROLSKY/Manifest",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::TestRelease",
+            "name" : "@DROLSKY/TestRelease",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::ConfirmRelease",
+            "name" : "@DROLSKY/ConfirmRelease",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::UploadToCPAN",
+            "name" : "@DROLSKY/UploadToCPAN",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
+            "name" : "@DROLSKY/CheckPrereqsIndexed",
+            "version" : "0.012"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CopyReadmeFromBuild",
+            "name" : "@DROLSKY/CopyReadmeFromBuild",
+            "version" : "0.0019"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::DROLSKY::Contributors",
+            "name" : "@DROLSKY/DROLSKY::Contributors",
+            "version" : "0.21"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::DROLSKY::License",
+            "name" : "@DROLSKY/DROLSKY::License",
+            "version" : "0.21"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
+            "config" : {
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@DROLSKY/Git::CheckFor::CorrectBranch",
+            "version" : "0.011"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts",
+            "config" : {
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@DROLSKY/Git::CheckFor::MergeConflicts",
+            "version" : "0.011"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Contributors",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Contributors" : {
+                  "include_authors" : "0",
+                  "include_releaser" : "1",
+                  "order_by" : "name",
+                  "paths" : []
+               }
+            },
+            "name" : "@DROLSKY/Git::Contributors",
+            "version" : "0.008"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Describe",
+            "name" : "@DROLSKY/Git::Describe",
+            "version" : "0.003"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::InstallGuide",
+            "name" : "@DROLSKY/InstallGuide",
+            "version" : "1.200005"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Meta::Contributors",
+            "name" : "@DROLSKY/Meta::Contributors",
+            "version" : "0.001"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaConfig",
+            "name" : "@DROLSKY/MetaConfig",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaJSON",
+            "name" : "@DROLSKY/MetaJSON",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::SurgicalPodWeaver",
+            "config" : {
+               "Dist::Zilla::Plugin::PodWeaver" : {
+                  "finder" : [
+                     ":InstallModules",
+                     ":ExecFiles"
+                  ],
+                  "plugins" : [
+                     {
+                        "class" : "Pod::Weaver::Plugin::EnsurePod5",
+                        "name" : "@CorePrep/EnsurePod5",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::H1Nester",
+                        "name" : "@CorePrep/H1Nester",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Name",
+                        "name" : "Name",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Version",
+                        "name" : "Version",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "prelude",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "SYNOPSIS",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "DESCRIPTION",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Leftovers",
+                        "name" : "Leftovers",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "postlude",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Authors",
+                        "name" : "Authors",
+                        "version" : "4.006"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Contributors",
+                        "name" : "Contributors",
+                        "version" : "0.008"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Legal",
+                        "name" : "Legal",
+                        "version" : "4.006"
+                     }
+                  ]
+               }
+            },
+            "name" : "@DROLSKY/SurgicalPodWeaver",
+            "version" : "0.0021"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
+            "name" : "@DROLSKY/PodSyntaxTests",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
+            "name" : "@DROLSKY/Test::CPAN::Changes",
+            "version" : "0.008"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Compile",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::Compile" : {
+                  "bail_out_on_fail" : "0",
+                  "fail_on_warning" : "author",
+                  "fake_home" : "0",
+                  "filename" : "t/00-compile.t",
+                  "module_finder" : [
+                     ":InstallModules"
+                  ],
+                  "needs_display" : "0",
+                  "phase" : "test",
+                  "script_finder" : [
+                     ":ExecFiles"
+                  ],
+                  "skips" : []
+               }
+            },
+            "name" : "@DROLSKY/Test::Compile",
+            "version" : "2.051"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::EOL",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::EOL" : {
+                  "filename" : "xt/author/eol.t"
+               }
+            },
+            "name" : "@DROLSKY/Test::EOL",
+            "version" : "0.15"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::NoTabs",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::NoTabs" : {
+                  "filename" : "xt/author/no-tabs.t",
+                  "finder" : [
+                     ":InstallModules",
+                     ":ExecFiles",
+                     ":TestFiles"
+                  ]
+               }
+            },
+            "name" : "@DROLSKY/Test::NoTabs",
+            "version" : "0.09"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Pod::LinkCheck",
+            "name" : "@DROLSKY/Test::Pod::LinkCheck",
+            "version" : "1.001"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Pod::No404s",
+            "name" : "@DROLSKY/Test::Pod::No404s",
+            "version" : "1.001"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Portability",
+            "name" : "@DROLSKY/Test::Portability",
+            "version" : "2.000005"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::Synopsis",
+            "name" : "@DROLSKY/Test::Synopsis",
+            "version" : "2.000005"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Check",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Check" : {
+                  "untracked_files" : "die"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [
+                     "Changes",
+                     "CONTRIBUTING.md",
+                     "README.md"
+                  ],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@DROLSKY/Git::Check",
+            "version" : "2.025"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Commit",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Commit" : {
+                  "add_files_in" : [],
+                  "commit_msg" : "v%v%n%n%c",
+                  "time_zone" : "local"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [
+                     "Changes",
+                     "CONTRIBUTING.md",
+                     "README.md"
+                  ],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@DROLSKY/Git::Commit",
+            "version" : "2.025"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Tag",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Tag" : {
+                  "branch" : null,
+                  "signed" : 0,
+                  "tag" : "v1.39",
+                  "tag_format" : "v%v",
+                  "tag_message" : "v%v",
+                  "time_zone" : "local"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@DROLSKY/Git::Tag",
+            "version" : "2.025"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Push",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Push" : {
+                  "push_to" : [
+                     "origin"
+                  ],
+                  "remotes_must_exist" : 1
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@DROLSKY/Git::Push",
+            "version" : "2.025"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":InstallModules",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":IncModules",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":TestFiles",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ExecFiles",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":ShareFiles",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":MainModule",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":AllFiles",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":NoFiles",
+            "version" : "5.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
+            "version" : "5.023"
+         }
+      ],
+      "zilla" : {
+         "class" : "Dist::Zilla::Dist::Builder",
+         "config" : {
+            "is_trial" : "0"
+         },
+         "version" : "5.023"
       }
    },
-   "version" : "1.38",
    "x_authority" : "cpan:DROLSKY",
    "x_contributors" : [
-      "Ricardo Signes <rjbs@cpan.org>",
-      "autarch <devnull@localhost>",
-      "convert-repo <devnull@localhost>",
-      "unknown <devnull@localhost>"
+      "Ricardo Signes <rjbs@cpan.org>"
    ]
 }
 
@@ -3,37 +3,470 @@ abstract: 'A module that allows you to declare real exception classes in Perl'
 author:
   - 'Dave Rolsky <autarch@urth.org>'
 build_requires:
-  File::Find: 0
-  File::Spec: 0
-  File::Temp: 0
-  Test::More: 0.88
-  vars: 0
+  ExtUtils::MakeMaker: '0'
+  File::Spec: '0'
+  IO::Handle: '0'
+  IPC::Open3: '0'
+  Test::More: '0.88'
+  vars: '0'
 configure_requires:
-  ExtUtils::MakeMaker: 6.30
+  ExtUtils::MakeMaker: '0'
 dynamic_config: 0
-generated_by: 'Dist::Zilla version 5.015, CPAN::Meta::Converter version 2.120921'
+generated_by: 'Dist::Zilla version 5.023, CPAN::Meta::Converter version 2.142690'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: Exception-Class
+provides:
+  Exception::Class:
+    file: lib/Exception/Class.pm
+    version: '1.39'
+  Exception::Class::Base:
+    file: lib/Exception/Class/Base.pm
+    version: '1.39'
 requires:
-  Class::Data::Inheritable: 0.02
-  Devel::StackTrace: 1.20
-  Scalar::Util: 0
-  base: 0
-  overload: 0
-  perl: 5.008001
-  strict: 0
-  warnings: 0
+  Class::Data::Inheritable: '0.02'
+  Devel::StackTrace: '2.00'
+  Scalar::Util: '0'
+  base: '0'
+  overload: '0'
+  perl: '5.008001'
+  strict: '0'
+  warnings: '0'
 resources:
   bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Bits
   homepage: http://metacpan.org/release/Test-Bits
-  repository: git://git.urth.org/Test-Bits.git
-version: 1.38
+  repository: git://github.com/autarch/Exception-Class.git
+version: '1.39'
+x_Dist_Zilla:
+  perl:
+    version: '5.016003'
+  plugins:
+    -
+      class: Dist::Zilla::Plugin::MakeMaker
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 1
+      name: '@DROLSKY/MakeMaker'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::Authority
+      name: '@DROLSKY/Authority'
+      version: '1.009'
+    -
+      class: Dist::Zilla::Plugin::AutoPrereqs
+      name: '@DROLSKY/AutoPrereqs'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::GatherDir
+      config:
+        Dist::Zilla::Plugin::GatherDir:
+          exclude_filename:
+            - README.md
+          exclude_match: []
+          follow_symlinks: '0'
+          include_dotfiles: '0'
+          prefix: ''
+          prune_directory: []
+          root: .
+      name: '@DROLSKY/GatherDir'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::GitHub::Meta
+      name: '@DROLSKY/GitHub::Meta'
+      version: '0.38'
+    -
+      class: Dist::Zilla::Plugin::GitHub::Update
+      name: '@DROLSKY/GitHub::Update'
+      version: '0.38'
+    -
+      class: Dist::Zilla::Plugin::MetaResources
+      name: '@DROLSKY/MetaResources'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::MetaProvides::Package
+      config:
+        Dist::Zilla::Plugin::MetaProvides::Package:
+          finder_objects:
+            -
+              class: Dist::Zilla::Plugin::FinderCode
+              name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
+              version: '5.023'
+        Dist::Zilla::Role::MetaProvider::Provider:
+          inherit_missing: '1'
+          inherit_version: '1'
+          meta_noindex: '1'
+      name: '@DROLSKY/MetaProvides::Package'
+      version: '2.001002'
+    -
+      class: Dist::Zilla::Plugin::NextRelease
+      name: '@DROLSKY/NextRelease'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::PkgVersion
+      name: '@DROLSKY/PkgVersion'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: test
+          type: requires
+      name: '@DROLSKY/TestMoreDoneTesting'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::PromptIfStale
+      config:
+        Dist::Zilla::Plugin::PromptIfStale:
+          check_all_plugins: '1'
+          check_all_prereqs: '1'
+          modules: []
+          phase: release
+          skip: []
+      name: '@DROLSKY/stale modules, release'
+      version: '0.028'
+    -
+      class: Dist::Zilla::Plugin::ReadmeAnyFromPod
+      name: '@DROLSKY/ReadmeMarkdownInBuild'
+      version: '0.142470'
+    -
+      class: Dist::Zilla::Plugin::ReadmeAnyFromPod
+      name: '@DROLSKY/ReadmeMarkdownInRoot'
+      version: '0.142470'
+    -
+      class: Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable
+      name: '@DROLSKY/Test::Pod::Coverage::Configurable'
+      version: '0.01'
+    -
+      class: Dist::Zilla::Plugin::Test::PodSpelling
+      name: '@DROLSKY/Test::PodSpelling'
+      version: '2.006008'
+    -
+      class: Dist::Zilla::Plugin::Test::ReportPrereqs
+      name: '@DROLSKY/Test::ReportPrereqs'
+      version: '0.019'
+    -
+      class: Dist::Zilla::Plugin::PruneCruft
+      name: '@DROLSKY/PruneCruft'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::ManifestSkip
+      name: '@DROLSKY/ManifestSkip'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::MetaYAML
+      name: '@DROLSKY/MetaYAML'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::License
+      name: '@DROLSKY/License'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::ExtraTests
+      name: '@DROLSKY/ExtraTests'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::ExecDir
+      name: '@DROLSKY/ExecDir'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::ShareDir
+      name: '@DROLSKY/ShareDir'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::Manifest
+      name: '@DROLSKY/Manifest'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::TestRelease
+      name: '@DROLSKY/TestRelease'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::ConfirmRelease
+      name: '@DROLSKY/ConfirmRelease'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::UploadToCPAN
+      name: '@DROLSKY/UploadToCPAN'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::CheckPrereqsIndexed
+      name: '@DROLSKY/CheckPrereqsIndexed'
+      version: '0.012'
+    -
+      class: Dist::Zilla::Plugin::CopyReadmeFromBuild
+      name: '@DROLSKY/CopyReadmeFromBuild'
+      version: '0.0019'
+    -
+      class: Dist::Zilla::Plugin::DROLSKY::Contributors
+      name: '@DROLSKY/DROLSKY::Contributors'
+      version: '0.21'
+    -
+      class: Dist::Zilla::Plugin::DROLSKY::License
+      name: '@DROLSKY/DROLSKY::License'
+      version: '0.21'
+    -
+      class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
+      config:
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@DROLSKY/Git::CheckFor::CorrectBranch'
+      version: '0.011'
+    -
+      class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts
+      config:
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@DROLSKY/Git::CheckFor::MergeConflicts'
+      version: '0.011'
+    -
+      class: Dist::Zilla::Plugin::Git::Contributors
+      config:
+        Dist::Zilla::Plugin::Git::Contributors:
+          include_authors: '0'
+          include_releaser: '1'
+          order_by: name
+          paths: []
+      name: '@DROLSKY/Git::Contributors'
+      version: '0.008'
+    -
+      class: Dist::Zilla::Plugin::Git::Describe
+      name: '@DROLSKY/Git::Describe'
+      version: '0.003'
+    -
+      class: Dist::Zilla::Plugin::InstallGuide
+      name: '@DROLSKY/InstallGuide'
+      version: '1.200005'
+    -
+      class: Dist::Zilla::Plugin::Meta::Contributors
+      name: '@DROLSKY/Meta::Contributors'
+      version: '0.001'
+    -
+      class: Dist::Zilla::Plugin::MetaConfig
+      name: '@DROLSKY/MetaConfig'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::MetaJSON
+      name: '@DROLSKY/MetaJSON'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::SurgicalPodWeaver
+      config:
+        Dist::Zilla::Plugin::PodWeaver:
+          finder:
+            - ':InstallModules'
+            - ':ExecFiles'
+          plugins:
+            -
+              class: Pod::Weaver::Plugin::EnsurePod5
+              name: '@CorePrep/EnsurePod5'
+              version: '4.006'
+            -
+              class: Pod::Weaver::Plugin::H1Nester
+              name: '@CorePrep/H1Nester'
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Name
+              name: Name
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Version
+              name: Version
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Region
+              name: prelude
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: SYNOPSIS
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: DESCRIPTION
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Leftovers
+              name: Leftovers
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Region
+              name: postlude
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Authors
+              name: Authors
+              version: '4.006'
+            -
+              class: Pod::Weaver::Section::Contributors
+              name: Contributors
+              version: '0.008'
+            -
+              class: Pod::Weaver::Section::Legal
+              name: Legal
+              version: '4.006'
+      name: '@DROLSKY/SurgicalPodWeaver'
+      version: '0.0021'
+    -
+      class: Dist::Zilla::Plugin::PodSyntaxTests
+      name: '@DROLSKY/PodSyntaxTests'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::Test::CPAN::Changes
+      name: '@DROLSKY/Test::CPAN::Changes'
+      version: '0.008'
+    -
+      class: Dist::Zilla::Plugin::Test::Compile
+      config:
+        Dist::Zilla::Plugin::Test::Compile:
+          bail_out_on_fail: '0'
+          fail_on_warning: author
+          fake_home: '0'
+          filename: t/00-compile.t
+          module_finder:
+            - ':InstallModules'
+          needs_display: '0'
+          phase: test
+          script_finder:
+            - ':ExecFiles'
+          skips: []
+      name: '@DROLSKY/Test::Compile'
+      version: '2.051'
+    -
+      class: Dist::Zilla::Plugin::Test::EOL
+      config:
+        Dist::Zilla::Plugin::Test::EOL:
+          filename: xt/author/eol.t
+      name: '@DROLSKY/Test::EOL'
+      version: '0.15'
+    -
+      class: Dist::Zilla::Plugin::Test::NoTabs
+      config:
+        Dist::Zilla::Plugin::Test::NoTabs:
+          filename: xt/author/no-tabs.t
+          finder:
+            - ':InstallModules'
+            - ':ExecFiles'
+            - ':TestFiles'
+      name: '@DROLSKY/Test::NoTabs'
+      version: '0.09'
+    -
+      class: Dist::Zilla::Plugin::Test::Pod::LinkCheck
+      name: '@DROLSKY/Test::Pod::LinkCheck'
+      version: '1.001'
+    -
+      class: Dist::Zilla::Plugin::Test::Pod::No404s
+      name: '@DROLSKY/Test::Pod::No404s'
+      version: '1.001'
+    -
+      class: Dist::Zilla::Plugin::Test::Portability
+      name: '@DROLSKY/Test::Portability'
+      version: '2.000005'
+    -
+      class: Dist::Zilla::Plugin::Test::Synopsis
+      name: '@DROLSKY/Test::Synopsis'
+      version: '2.000005'
+    -
+      class: Dist::Zilla::Plugin::Git::Check
+      config:
+        Dist::Zilla::Plugin::Git::Check:
+          untracked_files: die
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty:
+            - Changes
+            - CONTRIBUTING.md
+            - README.md
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@DROLSKY/Git::Check'
+      version: '2.025'
+    -
+      class: Dist::Zilla::Plugin::Git::Commit
+      config:
+        Dist::Zilla::Plugin::Git::Commit:
+          add_files_in: []
+          commit_msg: v%v%n%n%c
+          time_zone: local
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty:
+            - Changes
+            - CONTRIBUTING.md
+            - README.md
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@DROLSKY/Git::Commit'
+      version: '2.025'
+    -
+      class: Dist::Zilla::Plugin::Git::Tag
+      config:
+        Dist::Zilla::Plugin::Git::Tag:
+          branch: ~
+          signed: 0
+          tag: v1.39
+          tag_format: v%v
+          tag_message: v%v
+          time_zone: local
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@DROLSKY/Git::Tag'
+      version: '2.025'
+    -
+      class: Dist::Zilla::Plugin::Git::Push
+      config:
+        Dist::Zilla::Plugin::Git::Push:
+          push_to:
+            - origin
+          remotes_must_exist: 1
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@DROLSKY/Git::Push'
+      version: '2.025'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':InstallModules'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':IncModules'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':TestFiles'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ExecFiles'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':ShareFiles'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':MainModule'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':AllFiles'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':NoFiles'
+      version: '5.023'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
+      version: '5.023'
+  zilla:
+    class: Dist::Zilla::Dist::Builder
+    config:
+      is_trial: '0'
+    version: '5.023'
 x_authority: cpan:DROLSKY
 x_contributors:
   - 'Ricardo Signes <rjbs@cpan.org>'
-  - 'autarch <devnull@localhost>'
-  - 'convert-repo <devnull@localhost>'
-  - 'unknown <devnull@localhost>'
@@ -1,28 +1,28 @@
 
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.015.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.023.
 use strict;
 use warnings;
 
 use 5.008001;
 
-use ExtUtils::MakeMaker 6.30;
+use ExtUtils::MakeMaker;
 
 
 
 my %WriteMakefileArgs = (
   "ABSTRACT" => "A module that allows you to declare real exception classes in Perl",
   "AUTHOR" => "Dave Rolsky <autarch\@urth.org>",
-  "BUILD_REQUIRES" => {},
   "CONFIGURE_REQUIRES" => {
-    "ExtUtils::MakeMaker" => "6.30"
+    "ExtUtils::MakeMaker" => 0
   },
   "DISTNAME" => "Exception-Class",
   "EXE_FILES" => [],
   "LICENSE" => "perl",
+  "MIN_PERL_VERSION" => "5.008001",
   "NAME" => "Exception::Class",
   "PREREQ_PM" => {
     "Class::Data::Inheritable" => "0.02",
-    "Devel::StackTrace" => "1.20",
+    "Devel::StackTrace" => "2.00",
     "Scalar::Util" => 0,
     "base" => 0,
     "overload" => 0,
@@ -30,13 +30,14 @@ my %WriteMakefileArgs = (
     "warnings" => 0
   },
   "TEST_REQUIRES" => {
-    "File::Find" => 0,
+    "ExtUtils::MakeMaker" => 0,
     "File::Spec" => 0,
-    "File::Temp" => 0,
+    "IO::Handle" => 0,
+    "IPC::Open3" => 0,
     "Test::More" => "0.88",
     "vars" => 0
   },
-  "VERSION" => "1.38",
+  "VERSION" => "1.39",
   "test" => {
     "TESTS" => "t/*.t"
   }
@@ -45,10 +46,11 @@ my %WriteMakefileArgs = (
 
 my %FallbackPrereqs = (
   "Class::Data::Inheritable" => "0.02",
-  "Devel::StackTrace" => "1.20",
-  "File::Find" => 0,
+  "Devel::StackTrace" => "2.00",
+  "ExtUtils::MakeMaker" => 0,
   "File::Spec" => 0,
-  "File::Temp" => 0,
+  "IO::Handle" => 0,
+  "IPC::Open3" => 0,
   "Scalar::Util" => 0,
   "Test::More" => "0.88",
   "base" => 0,
@@ -1,312 +0,0 @@
-NAME
-    Exception::Class - A module that allows you to declare real exception
-    classes in Perl
-
-VERSION
-    version 1.38
-
-SYNOPSIS
-      use Exception::Class (
-          'MyException',
-
-          'AnotherException' => { isa => 'MyException' },
-
-          'YetAnotherException' => {
-              isa         => 'AnotherException',
-              description => 'These exceptions are related to IPC'
-          },
-
-          'ExceptionWithFields' => {
-              isa    => 'YetAnotherException',
-              fields => [ 'grandiosity', 'quixotic' ],
-              alias  => 'throw_fields',
-          },
-      );
-      use Scalar::Util qw( blessed );
-      use Try::Tiny;
-
-      try {
-          MyException->throw( error => 'I feel funny.' );
-      }
-      catch {
-          die $_ unless blessed $_ && $_->can('rethrow');
-
-          if ( $_->isa('Exception::Class') ) {
-              warn $_->error, "\n", $_->trace->as_string, "\n";
-              warn join ' ', $_->euid, $_->egid, $_->uid, $_->gid, $_->pid, $_->time;
-
-              exit;
-          }
-          elsif ( $_->isa('ExceptionWithFields') ) {
-              if ( $_->quixotic ) {
-                  handle_quixotic_exception();
-              }
-              else {
-                  handle_non_quixotic_exception();
-              }
-          }
-          else {
-              $_->rethrow;
-          }
-      };
-
-      # without Try::Tiny
-
-      eval { ... };
-      if ( my $e = Exception::Class->caught() ) { ... }
-
-      # use an alias - without parens subroutine name is checked at
-      # compile time
-      throw_fields error => "No strawberry", grandiosity => "quite a bit";
-
-DESCRIPTION
-    RECOMMENDATION 1: If you are writing modern Perl code with Moose or Moo
-    I highly recommend using Throwable instead of this module.
-
-    RECOMMENDATION 2: Whether or not you use Throwable, you should use
-    Try::Tiny.
-
-    Exception::Class allows you to declare exception hierarchies in your
-    modules in a "Java-esque" manner.
-
-    It features a simple interface allowing programmers to 'declare'
-    exception classes at compile time. It also has a base exception class,
-    Exception::Class::Base, that can be easily extended.
-
-    It is designed to make structured exception handling simpler and better
-    by encouraging people to use hierarchies of exceptions in their
-    applications, as opposed to a single catch-all exception class.
-
-    This module does not implement any try/catch syntax. Please see the
-    "OTHER EXCEPTION MODULES (try/catch syntax)" section for more
-    information on how to get this syntax.
-
-    You will also want to look at the documentation for
-    Exception::Class::Base, which is the default base class for all
-    exception objects created by this module.
-
-DECLARING EXCEPTION CLASSES
-    Importing "Exception::Class" allows you to automagically create
-    Exception::Class::Base subclasses. You can also create subclasses via
-    the traditional means of defining your own subclass with @ISA. These two
-    methods may be easily combined, so that you could subclass an exception
-    class defined via the automagic import, if you desired this.
-
-    The syntax for the magic declarations is as follows:
-
-    'MANDATORY CLASS NAME' => \%optional_hashref
-
-    The hashref may contain the following options:
-
-    *   isa
-
-        This is the class's parent class. If this isn't provided then the
-        class name in $Exception::Class::BASE_EXC_CLASS is assumed to be the
-        parent (see below).
-
-        This parameter lets you create arbitrarily deep class hierarchies.
-        This can be any other Exception::Class::Base subclass in your
-        declaration *or* a subclass loaded from a module.
-
-        To change the default exception class you will need to change the
-        value of $Exception::Class::BASE_EXC_CLASS *before* calling
-        "import()". To do this simply do something like this:
-
-          BEGIN { $Exception::Class::BASE_EXC_CLASS = 'SomeExceptionClass'; }
-
-        If anyone can come up with a more elegant way to do this please let
-        me know.
-
-        CAVEAT: If you want to automagically subclass an
-        Exception::Class::Base subclass loaded from a file, then you *must*
-        compile the class (via use or require or some other magic) *before*
-        you import "Exception::Class" or you'll get a compile time error.
-
-    *   fields
-
-        This allows you to define additional attributes for your exception
-        class. Any field you define can be passed to the "throw()" or
-        "new()" methods as additional parameters for the constructor. In
-        addition, your exception object will have an accessor method for the
-        fields you define.
-
-        This parameter can be either a scalar (for a single field) or an
-        array reference if you need to define multiple fields.
-
-        Fields will be inherited by subclasses.
-
-    *   alias
-
-        Specifying an alias causes this class to create a subroutine of the
-        specified name in the *caller's* namespace. Calling this subroutine
-        is equivalent to calling "<class>->throw(@_)" for the given
-        exception class.
-
-        Besides convenience, using aliases also allows for additional
-        compile time checking. If the alias is called *without parentheses*,
-        as in "throw_fields "an error occurred"", then Perl checks for the
-        existence of the "throw_fields()" subroutine at compile time. If
-        instead you do "ExceptionWithFields->throw(...)", then Perl checks
-        the class name at runtime, meaning that typos may sneak through.
-
-    *   description
-
-        Each exception class has a description method that returns a fixed
-        string. This should describe the exception *class* (as opposed to
-        any particular exception object). This may be useful for debugging
-        if you start catching exceptions you weren't expecting (particularly
-        if someone forgot to document them) and you don't understand the
-        error messages.
-
-    The "Exception::Class" magic attempts to detect circular class
-    hierarchies and will die if it finds one. It also detects missing links
-    in a chain, for example if you declare Bar to be a subclass of Foo and
-    never declare Foo.
-
-Try::Tiny
-    If you are interested in adding try/catch/finally syntactic sugar to
-    your code then I recommend you check out Try::Tiny. This is a great
-    module that helps you ignore some of the weirdness with "eval" and $@.
-    Here's an example of how the two modules work together:
-
-      use Exception::Class ( 'My::Exception' );
-      use Scalar::Util qw( blessed );
-      use Try::Tiny;
-
-      try {
-          might_throw();
-      }
-      catch {
-          if ( blessed $_ && $_->isa('My::Exception') ) {
-              handle_it();
-          }
-          else {
-              die $_;
-          }
-      };
-
-    Note that you cannot use "Exception::Class->caught()" with Try::Tiny.
-
-Catching Exceptions Without Try::Tiny
-    "Exception::Class" provides some syntactic sugar for catching exceptions
-    in a safe manner:
-
-      eval {...};
-
-      if ( my $e = Exception::Class->caught('My::Error') ) {
-          cleanup();
-          do_something_with_exception($e);
-      }
-
-    The "caught()" method takes a class name and returns an exception object
-    if the last thrown exception is of the given class, or a subclass of
-    that class. If it is not given any arguments, it simply returns $@.
-
-    You should always make a copy of the exception object, rather than using
-    $@ directly. This is necessary because if your "cleanup()" function uses
-    "eval", or calls something which uses it, then $@ is overwritten.
-    Copying the exception preserves it for the call to
-    "do_something_with_exception()".
-
-    Exception objects also provide a caught method so you can write:
-
-      if ( my $e = My::Error->caught() ) {
-          cleanup();
-          do_something_with_exception($e);
-      }
-
-  Uncatchable Exceptions
-    Internally, the "caught()" method will call "isa()" on the exception
-    object. You could make an exception "uncatchable" by overriding "isa()"
-    in that class like this:
-
-     package Exception::Uncatchable;
-
-     sub isa { shift->rethrow }
-
-    Of course, this only works if you always call
-    "Exception::Class->caught()" after an "eval".
-
-USAGE RECOMMENDATION
-    If you're creating a complex system that throws lots of different types
-    of exceptions, consider putting all the exception declarations in one
-    place. For an app called Foo you might make a "Foo::Exceptions" module
-    and use that in all your code. This module could just contain the code
-    to make "Exception::Class" do its automagic class creation. Doing this
-    allows you to more easily see what exceptions you have, and makes it
-    easier to keep track of them.
-
-    This might look something like this:
-
-      package Foo::Bar::Exceptions;
-
-      use Exception::Class (
-          Foo::Bar::Exception::Senses =>
-              { description => 'sense-related exception' },
-
-          Foo::Bar::Exception::Smell => {
-              isa         => 'Foo::Bar::Exception::Senses',
-              fields      => 'odor',
-              description => 'stinky!'
-          },
-
-          Foo::Bar::Exception::Taste => {
-              isa         => 'Foo::Bar::Exception::Senses',
-              fields      => [ 'taste', 'bitterness' ],
-              description => 'like, gag me with a spoon!'
-          },
-
-          ...
-      );
-
-    You may want to create a real module to subclass Exception::Class::Base
-    as well, particularly if you want your exceptions to have more methods.
-
-  Subclassing Exception::Class::Base
-    As part of your usage of "Exception::Class", you may want to create your
-    own base exception class which subclasses Exception::Class::Base. You
-    should feel free to subclass any of the methods documented above. For
-    example, you may want to subclass "new()" to add additional information
-    to your exception objects.
-
-Exception::Class FUNCTIONS
-    The "Exception::Class" method offers one function, "Classes()", which is
-    not exported. This method returns a list of the classes that have been
-    created by calling the "Exception::Class" import() method. Note that
-    this is *all* the subclasses that have been created, so it may include
-    subclasses created by things like CPAN modules, etc. Also note that if
-    you simply define a subclass via the normal Perl method of setting @ISA
-    or "use base", then your subclass will not be included.
-
-SUPPORT
-    Please submit bugs to the CPAN RT system at
-    http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Exception%3A%3AClass or
-    via email at bug-exception-class@rt.cpan.org.
-
-DONATIONS
-    If you'd like to thank me for the work I've done on this module, please
-    consider making a "donation" to me via PayPal. I spend a lot of free
-    time creating free software, and would appreciate any support you'd care
-    to offer.
-
-    Please note that I am not suggesting that you must do this in order for
-    me to continue working on this particular software. I will continue to
-    do so, inasmuch as I have in the past, for as long as it interests me.
-
-    Similarly, a donation made in this way will probably not make me work on
-    this software much more, unless I get so many donations that I can
-    consider working on free software full time, which seems unlikely at
-    best.
-
-    To donate, log into PayPal and send money to autarch@urth.org or use the
-    button on this page: <http://www.urth.org/~autarch/fs-donation.html>
-
-AUTHOR
-    Dave Rolsky <autarch@urth.org>
-
-COPYRIGHT AND LICENSE
-    This software is copyright (c) 2014 by Dave Rolsky.
-
-    This is free software; you can redistribute it and/or modify it under
-    the same terms as the Perl 5 programming language system itself.
-
@@ -0,0 +1,337 @@
+# NAME
+
+Exception::Class - A module that allows you to declare real exception classes in Perl
+
+# VERSION
+
+version 1.39
+
+# SYNOPSIS
+
+    use Exception::Class (
+        'MyException',
+
+        'AnotherException' => { isa => 'MyException' },
+
+        'YetAnotherException' => {
+            isa         => 'AnotherException',
+            description => 'These exceptions are related to IPC'
+        },
+
+        'ExceptionWithFields' => {
+            isa    => 'YetAnotherException',
+            fields => [ 'grandiosity', 'quixotic' ],
+            alias  => 'throw_fields',
+        },
+    );
+    use Scalar::Util qw( blessed );
+    use Try::Tiny;
+
+    try {
+        MyException->throw( error => 'I feel funny.' );
+    }
+    catch {
+        die $_ unless blessed $_ && $_->can('rethrow');
+
+        if ( $_->isa('Exception::Class') ) {
+            warn $_->error, "\n", $_->trace->as_string, "\n";
+            warn join ' ', $_->euid, $_->egid, $_->uid, $_->gid, $_->pid, $_->time;
+
+            exit;
+        }
+        elsif ( $_->isa('ExceptionWithFields') ) {
+            if ( $_->quixotic ) {
+                handle_quixotic_exception();
+            }
+            else {
+                handle_non_quixotic_exception();
+            }
+        }
+        else {
+            $_->rethrow;
+        }
+    };
+
+    # without Try::Tiny
+
+    eval { ... };
+    if ( my $e = Exception::Class->caught() ) { ... }
+
+    # use an alias - without parens subroutine name is checked at
+    # compile time
+    throw_fields error => "No strawberry", grandiosity => "quite a bit";
+
+# DESCRIPTION
+
+**RECOMMENDATION 1**: If you are writing modern Perl code with [Moose](https://metacpan.org/pod/Moose) or
+[Moo](https://metacpan.org/pod/Moo) I highly recommend using [Throwable](https://metacpan.org/pod/Throwable) instead of this module.
+
+**RECOMMENDATION 2**: Whether or not you use [Throwable](https://metacpan.org/pod/Throwable), you should use
+[Try::Tiny](https://metacpan.org/pod/Try::Tiny).
+
+Exception::Class allows you to declare exception hierarchies in your
+modules in a "Java-esque" manner.
+
+It features a simple interface allowing programmers to 'declare'
+exception classes at compile time. It also has a base exception
+class, [Exception::Class::Base](https://metacpan.org/pod/Exception::Class::Base), that can be easily extended.
+
+It is designed to make structured exception handling simpler and
+better by encouraging people to use hierarchies of exceptions in their
+applications, as opposed to a single catch-all exception class.
+
+This module does not implement any try/catch syntax. Please see the
+"OTHER EXCEPTION MODULES (try/catch syntax)" section for more
+information on how to get this syntax.
+
+You will also want to look at the documentation for
+[Exception::Class::Base](https://metacpan.org/pod/Exception::Class::Base), which is the default base class for all
+exception objects created by this module.
+
+# DECLARING EXCEPTION CLASSES
+
+Importing `Exception::Class` allows you to automagically create
+[Exception::Class::Base](https://metacpan.org/pod/Exception::Class::Base) subclasses. You can also create subclasses
+via the traditional means of defining your own subclass with `@ISA`.
+These two methods may be easily combined, so that you could subclass
+an exception class defined via the automagic import, if you desired
+this.
+
+The syntax for the magic declarations is as follows:
+
+'MANDATORY CLASS NAME' => \\%optional\_hashref
+
+The hashref may contain the following options:
+
+- isa
+
+    This is the class's parent class. If this isn't provided then the
+    class name in `$Exception::Class::BASE_EXC_CLASS` is assumed to be
+    the parent (see below).
+
+    This parameter lets you create arbitrarily deep class hierarchies.
+    This can be any other [Exception::Class::Base](https://metacpan.org/pod/Exception::Class::Base) subclass in your
+    declaration _or_ a subclass loaded from a module.
+
+    To change the default exception class you will need to change the
+    value of `$Exception::Class::BASE_EXC_CLASS` _before_ calling
+    `import()`. To do this simply do something like this:
+
+        BEGIN { $Exception::Class::BASE_EXC_CLASS = 'SomeExceptionClass'; }
+
+    If anyone can come up with a more elegant way to do this please let me
+    know.
+
+    CAVEAT: If you want to automagically subclass an
+    [Exception::Class::Base](https://metacpan.org/pod/Exception::Class::Base) subclass loaded from a file, then you
+    _must_ compile the class (via use or require or some other magic)
+    _before_ you import `Exception::Class` or you'll get a compile time
+    error.
+
+- fields
+
+    This allows you to define additional attributes for your exception
+    class. Any field you define can be passed to the `throw()` or
+    `new()` methods as additional parameters for the constructor. In
+    addition, your exception object will have an accessor method for the
+    fields you define.
+
+    This parameter can be either a scalar (for a single field) or an array
+    reference if you need to define multiple fields.
+
+    Fields will be inherited by subclasses.
+
+- alias
+
+    Specifying an alias causes this class to create a subroutine of the
+    specified name in the _caller's_ namespace. Calling this subroutine
+    is equivalent to calling `<class>->throw(@_)` for the given
+    exception class.
+
+    Besides convenience, using aliases also allows for additional compile
+    time checking. If the alias is called _without parentheses_, as in
+    `throw_fields "an error occurred"`, then Perl checks for the
+    existence of the `throw_fields()` subroutine at compile time. If
+    instead you do `ExceptionWithFields->throw(...)`, then Perl
+    checks the class name at runtime, meaning that typos may sneak
+    through.
+
+- description
+
+    Each exception class has a description method that returns a fixed
+    string. This should describe the exception _class_ (as opposed to
+    any particular exception object). This may be useful for debugging if
+    you start catching exceptions you weren't expecting (particularly if
+    someone forgot to document them) and you don't understand the error
+    messages.
+
+The `Exception::Class` magic attempts to detect circular class
+hierarchies and will die if it finds one. It also detects missing
+links in a chain, for example if you declare Bar to be a subclass of
+Foo and never declare Foo.
+
+# [Try::Tiny](https://metacpan.org/pod/Try::Tiny)
+
+If you are interested in adding try/catch/finally syntactic sugar to your code
+then I recommend you check out [Try::Tiny](https://metacpan.org/pod/Try::Tiny). This is a great module that helps
+you ignore some of the weirdness with `eval` and `$@`. Here's an example of
+how the two modules work together:
+
+    use Exception::Class ( 'My::Exception' );
+    use Scalar::Util qw( blessed );
+    use Try::Tiny;
+
+    try {
+        might_throw();
+    }
+    catch {
+        if ( blessed $_ && $_->isa('My::Exception') ) {
+            handle_it();
+        }
+        else {
+            die $_;
+        }
+    };
+
+Note that you **cannot** use `Exception::Class->caught()` with
+[Try::Tiny](https://metacpan.org/pod/Try::Tiny).
+
+# Catching Exceptions Without [Try::Tiny](https://metacpan.org/pod/Try::Tiny)
+
+`Exception::Class` provides some syntactic sugar for catching
+exceptions in a safe manner:
+
+    eval {...};
+
+    if ( my $e = Exception::Class->caught('My::Error') ) {
+        cleanup();
+        do_something_with_exception($e);
+    }
+
+The `caught()` method takes a class name and returns an exception
+object if the last thrown exception is of the given class, or a
+subclass of that class. If it is not given any arguments, it simply
+returns `$@`.
+
+You should **always** make a copy of the exception object, rather than
+using `$@` directly. This is necessary because if your `cleanup()`
+function uses `eval`, or calls something which uses it, then `$@` is
+overwritten. Copying the exception preserves it for the call to
+`do_something_with_exception()`.
+
+Exception objects also provide a caught method so you can write:
+
+    if ( my $e = My::Error->caught() ) {
+        cleanup();
+        do_something_with_exception($e);
+    }
+
+## Uncatchable Exceptions
+
+Internally, the `caught()` method will call `isa()` on the exception
+object. You could make an exception "uncatchable" by overriding
+`isa()` in that class like this:
+
+    package Exception::Uncatchable;
+
+    sub isa { shift->rethrow }
+
+Of course, this only works if you always call `Exception::Class->caught()` after an `eval`.
+
+# USAGE RECOMMENDATION
+
+If you're creating a complex system that throws lots of different
+types of exceptions, consider putting all the exception declarations
+in one place. For an app called Foo you might make a
+`Foo::Exceptions` module and use that in all your code. This module
+could just contain the code to make `Exception::Class` do its
+automagic class creation. Doing this allows you to more easily see
+what exceptions you have, and makes it easier to keep track of them.
+
+This might look something like this:
+
+    package Foo::Bar::Exceptions;
+
+    use Exception::Class (
+        Foo::Bar::Exception::Senses =>
+            { description => 'sense-related exception' },
+
+        Foo::Bar::Exception::Smell => {
+            isa         => 'Foo::Bar::Exception::Senses',
+            fields      => 'odor',
+            description => 'stinky!'
+        },
+
+        Foo::Bar::Exception::Taste => {
+            isa         => 'Foo::Bar::Exception::Senses',
+            fields      => [ 'taste', 'bitterness' ],
+            description => 'like, gag me with a spoon!'
+        },
+
+        ...
+    );
+
+You may want to create a real module to subclass
+[Exception::Class::Base](https://metacpan.org/pod/Exception::Class::Base) as well, particularly if you want your
+exceptions to have more methods.
+
+## Subclassing Exception::Class::Base
+
+As part of your usage of `Exception::Class`, you may want to create
+your own base exception class which subclasses
+[Exception::Class::Base](https://metacpan.org/pod/Exception::Class::Base). You should feel free to subclass any of
+the methods documented above. For example, you may want to subclass
+`new()` to add additional information to your exception objects.
+
+# Exception::Class FUNCTIONS
+
+The `Exception::Class` method offers one function, `Classes()`,
+which is not exported. This method returns a list of the classes that
+have been created by calling the `Exception::Class` import() method.
+Note that this is _all_ the subclasses that have been created, so it
+may include subclasses created by things like CPAN modules, etc. Also
+note that if you simply define a subclass via the normal Perl method
+of setting `@ISA` or `use base`, then your subclass will not be
+included.
+
+# SUPPORT
+
+Please submit bugs to the CPAN RT system at
+http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Exception%3A%3AClass or
+via email at bug-exception-class@rt.cpan.org.
+
+# DONATIONS
+
+If you'd like to thank me for the work I've done on this module,
+please consider making a "donation" to me via PayPal. I spend a lot of
+free time creating free software, and would appreciate any support
+you'd care to offer.
+
+Please note that **I am not suggesting that you must do this** in order
+for me to continue working on this particular software. I will
+continue to do so, inasmuch as I have in the past, for as long as it
+interests me.
+
+Similarly, a donation made in this way will probably not make me work
+on this software much more, unless I get so many donations that I can
+consider working on free software full time, which seems unlikely at
+best.
+
+To donate, log into PayPal and send money to autarch@urth.org or use
+the button on this page:
+[http://www.urth.org/~autarch/fs-donation.html](http://www.urth.org/~autarch/fs-donation.html)
+
+# AUTHOR
+
+Dave Rolsky <autarch@urth.org>
+
+# CONTRIBUTOR
+
+Ricardo Signes <rjbs@cpan.org>
+
+# COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2014 by David Rolsky.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
@@ -3,7 +3,7 @@ author = Dave Rolsky <autarch@urth.org>
 license = Perl_5
 copyright_holder = Dave Rolsky
 
-version = 1.38
+version = 1.39
 
 [@DROLSKY]
 dist = Test-Bits
@@ -1,18 +1,17 @@
 package Exception::Class::Base;
-$Exception::Class::Base::VERSION = '1.38';
+$Exception::Class::Base::VERSION = '1.39';
 use strict;
 use warnings;
 
 use Class::Data::Inheritable 0.02;
-use Devel::StackTrace 1.20;
+use Devel::StackTrace 2.00;
 use Scalar::Util qw( blessed );
 
 use base qw(Class::Data::Inheritable);
 
 BEGIN {
     __PACKAGE__->mk_classdata('Trace');
-    __PACKAGE__->mk_classdata('NoRefs');
-    __PACKAGE__->NoRefs(1);
+    __PACKAGE__->mk_classdata('UnsafeRefCapture');
 
     __PACKAGE__->mk_classdata('NoContextInfo');
     __PACKAGE__->NoContextInfo(0);
@@ -23,6 +22,17 @@ BEGIN {
     __PACKAGE__->mk_classdata('MaxArgLength');
     __PACKAGE__->MaxArgLength(0);
 
+    sub NoRefs {
+        my $self = shift;
+        if (@_) {
+            my $val = shift;
+            return $self->UnsafeRefCapture(!$val);
+        }
+        else {
+            return $self->UnsafeRefCapture();
+        }
+    }
+
     sub Fields { () }
 }
 
@@ -124,11 +134,11 @@ sub _initialize {
         }
 
         $self->{trace} = Devel::StackTrace->new(
-            ignore_class     => \@ignore_class,
-            ignore_package   => \@ignore_package,
-            no_refs          => $self->NoRefs,
-            respect_overload => $self->RespectOverload,
-            max_arg_length   => $self->MaxArgLength,
+            ignore_class       => \@ignore_class,
+            ignore_package     => \@ignore_package,
+            unsafe_ref_capture => $self->UnsafeRefCapture,
+            respect_overload   => $self->RespectOverload,
+            max_arg_length     => $self->MaxArgLength,
         );
     }
 
@@ -250,7 +260,7 @@ Exception::Class::Base - A base class for exception objects
 
 =head1 VERSION
 
-version 1.38
+version 1.39
 
 =head1 SYNOPSIS
 
@@ -268,18 +278,19 @@ information about the exception.
 
 =for Pod::Coverage     Classes
     caught
+    NoRefs
 
 =head1 METHODS
 
 =head2 MyException->Trace($boolean)
 
 Each C<Exception::Class::Base> subclass can be set individually to
-include a stacktrace when the C<as_string> method is called.  The
-default is to not include a stacktrace.  Calling this method with a
-value changes this behavior.  It always returns the current value
+include a stacktrace when the C<as_string> method is called. The
+default is to not include a stacktrace. Calling this method with a
+value changes this behavior. It always returns the current value
 (after any change is applied).
 
-This value is inherited by any subclasses.  However, if this value is
+This value is inherited by any subclasses. However, if this value is
 set for a subclass, it will thereafter be independent of the value in
 C<Exception::Class::Base>.
 
@@ -290,22 +301,21 @@ control.
 
 This is a class method, not an object method.
 
-=head2 MyException->NoRefs($boolean)
+=head2 MyException->UnsafeRefCapture($boolean)
 
 When a C<Devel::StackTrace> object is created, it walks through the
 stack and stores the arguments which were passed to each subroutine on
-the stack.  If any of these arguments are references, then that means
-that the C<Devel::StackTrace> ends up increasing the refcount of these
+the stack. If any of these arguments are references, then that means
+that the C<Devel::StackTrace> ends up increasing the ref count of these
 references, delaying their destruction.
 
 Since C<Exception::Class::Base> uses C<Devel::StackTrace> internally,
 this method provides a way to tell C<Devel::StackTrace> not to store
-these references.  Instead, C<Devel::StackTrace> replaces references
+these references. Instead, C<Devel::StackTrace> replaces references
 with their stringified representation.
 
-This method defaults to true.  As with C<Trace()>, it is inherited by
-subclasses but setting it in a subclass makes it independent
-thereafter.
+This method defaults to false. As with C<Trace()>, it is inherited by
+subclasses but setting it in a subclass makes it independent thereafter.
 
 Do not call this on the C<Exception::Class::Base> class directly or
 you'll change it for all exception classes that use
@@ -321,7 +331,7 @@ Since C<Exception::Class::Base> uses C<Devel::StackTrace> internally,
 this method provides a way to tell C<Devel::StackTrace> to respect
 overloading.
 
-This method defaults to false.  As with C<Trace()>, it is inherited by
+This method defaults to false. As with C<Trace()>, it is inherited by
 subclasses but setting it in a subclass makes it independent
 thereafter.
 
@@ -365,13 +375,13 @@ control.
 
 =head2 MyException->throw( error => $error )
 
-This method creates a new object with the given error message.  If no
-error message is given, this will be an empty string.  It then dies
+This method creates a new object with the given error message. If no
+error message is given, this will be an empty string. It then dies
 with this object as its argument.
 
 This method also takes a C<show_trace> parameter which indicates
 whether or not the particular exception object being created should
-show a stacktrace when its C<as_string()> method is called.  This
+show a stacktrace when its C<as_string()> method is called. This
 overrides the value of C<Trace()> for this class if it is given.
 
 The frames included in the trace can be controlled by the C<ignore_class>
@@ -395,14 +405,14 @@ via the C<throw()> method.
 =head2 MyException->description()
 
 Returns the description for the given C<Exception::Class::Base>
-subclass.  The C<Exception::Class::Base> class's description is
-"Generic exception" (this may change in the future).  This is also an
+subclass. The C<Exception::Class::Base> class's description is
+"Generic exception" (this may change in the future). This is also an
 object method.
 
 =head2 $exception->rethrow()
 
-Simply dies with the object as its sole argument.  It's just syntactic
-sugar.  This does not change any of the object's attribute values.
+Simply dies with the object as its sole argument. It's just syntactic
+sugar. This does not change any of the object's attribute values.
 However, it will cause C<caller()> to report the die as coming from
 within the C<Exception::Class::Base> class rather than where rethrow
 was called.
@@ -492,15 +502,15 @@ stringified.
 =head2 $exception->as_string()
 
 Returns a string form of the error message (something like what you'd
-expect from die).  If the class or object is set to show traces then
-then the full trace is also included.  The result looks like
+expect from die). If the class or object is set to show traces then
+then the full trace is also included. The result looks like
 C<Carp::confess()>.
 
 =head2 $exception->full_message()
 
-Called by the C<as_string()> method to get the message.  By default,
+Called by the C<as_string()> method to get the message. By default,
 this is the same as calling the C<message()> method, but may be
-overridden by a subclass.  See below for details.
+overridden by a subclass. See below for details.
 
 =head1 LIGHTWEIGHT EXCEPTIONS
 
@@ -524,10 +534,10 @@ time, pid, uid, euid, gid, or egid. It only has a message.
 =head1 OVERLOADING
 
 C<Exception::Class::Base> objects are overloaded so that
-stringification produces a normal error message.  This just calls the
-C<< $exception->as_string() >> method described above.  This means
+stringification produces a normal error message. This just calls the
+C<< $exception->as_string() >> method described above. This means
 that you can just C<print $@> after an C<eval> and not worry about
-whether or not its an actual object.  It also means an application or
+whether or not its an actual object. It also means an application or
 module could do this:
 
  $SIG{__DIE__} = sub { Exception::Class::Base->throw( error => join '', @_ ); };
@@ -547,7 +557,7 @@ include those fields in the stringified error.
 
 Inside the C<as_string()> method, the message (non-stack trace)
 portion of the error is generated by calling the C<full_message()>
-method.  This can be easily overridden.  For example:
+method. This can be easily overridden. For example:
 
   sub full_message {
       my $self = shift;
@@ -565,7 +575,7 @@ Dave Rolsky <autarch@urth.org>
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2014 by Dave Rolsky.
+This software is copyright (c) 2014 by David Rolsky.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,7 @@
 package Exception::Class;
-$Exception::Class::VERSION = '1.38';
+# git description: v1.38-8-gbef365d
+
+$Exception::Class::VERSION = '1.39';
 use 5.008001;
 
 use strict;
@@ -76,7 +78,7 @@ sub _make_parents {
     no strict 'refs';
 
     # What if someone makes a typo in specifying their 'isa' param?
-    # This should catch it.  Either it's been made because it didn't
+    # This should catch it. Either it's been made because it didn't
     # have missing parents OR it's in our hash as needing a parent.
     # If neither of these is true then the _only_ place it is
     # mentioned is in the 'isa' param for some other class, which is
@@ -206,7 +208,7 @@ Exception::Class - A module that allows you to declare real exception classes in
 
 =head1 VERSION
 
-version 1.38
+version 1.39
 
 =head1 SYNOPSIS
 
@@ -275,14 +277,14 @@ Exception::Class allows you to declare exception hierarchies in your
 modules in a "Java-esque" manner.
 
 It features a simple interface allowing programmers to 'declare'
-exception classes at compile time.  It also has a base exception
+exception classes at compile time. It also has a base exception
 class, L<Exception::Class::Base>, that can be easily extended.
 
 It is designed to make structured exception handling simpler and
 better by encouraging people to use hierarchies of exceptions in their
 applications, as opposed to a single catch-all exception class.
 
-This module does not implement any try/catch syntax.  Please see the
+This module does not implement any try/catch syntax. Please see the
 "OTHER EXCEPTION MODULES (try/catch syntax)" section for more
 information on how to get this syntax.
 
@@ -296,7 +298,7 @@ exception objects created by this module.
 =head1 DECLARING EXCEPTION CLASSES
 
 Importing C<Exception::Class> allows you to automagically create
-L<Exception::Class::Base> subclasses.  You can also create subclasses
+L<Exception::Class::Base> subclasses. You can also create subclasses
 via the traditional means of defining your own subclass with C<@ISA>.
 These two methods may be easily combined, so that you could subclass
 an exception class defined via the automagic import, if you desired
@@ -312,7 +314,7 @@ The hashref may contain the following options:
 
 =item * isa
 
-This is the class's parent class.  If this isn't provided then the
+This is the class's parent class. If this isn't provided then the
 class name in C<$Exception::Class::BASE_EXC_CLASS> is assumed to be
 the parent (see below).
 
@@ -322,7 +324,7 @@ declaration I<or> a subclass loaded from a module.
 
 To change the default exception class you will need to change the
 value of C<$Exception::Class::BASE_EXC_CLASS> I<before> calling
-C<import()>.  To do this simply do something like this:
+C<import()>. To do this simply do something like this:
 
   BEGIN { $Exception::Class::BASE_EXC_CLASS = 'SomeExceptionClass'; }
 
@@ -338,8 +340,8 @@ error.
 =item * fields
 
 This allows you to define additional attributes for your exception
-class.  Any field you define can be passed to the C<throw()> or
-C<new()> methods as additional parameters for the constructor.  In
+class. Any field you define can be passed to the C<throw()> or
+C<new()> methods as additional parameters for the constructor. In
 addition, your exception object will have an accessor method for the
 fields you define.
 
@@ -351,14 +353,14 @@ Fields will be inherited by subclasses.
 =item * alias
 
 Specifying an alias causes this class to create a subroutine of the
-specified name in the I<caller's> namespace.  Calling this subroutine
+specified name in the I<caller's> namespace. Calling this subroutine
 is equivalent to calling C<< <class>->throw(@_) >> for the given
 exception class.
 
 Besides convenience, using aliases also allows for additional compile
-time checking.  If the alias is called I<without parentheses>, as in
+time checking. If the alias is called I<without parentheses>, as in
 C<throw_fields "an error occurred">, then Perl checks for the
-existence of the C<throw_fields()> subroutine at compile time.  If
+existence of the C<throw_fields()> subroutine at compile time. If
 instead you do C<< ExceptionWithFields->throw(...) >>, then Perl
 checks the class name at runtime, meaning that typos may sneak
 through.
@@ -366,8 +368,8 @@ through.
 =item * description
 
 Each exception class has a description method that returns a fixed
-string.  This should describe the exception I<class> (as opposed to
-any particular exception object).  This may be useful for debugging if
+string. This should describe the exception I<class> (as opposed to
+any particular exception object). This may be useful for debugging if
 you start catching exceptions you weren't expecting (particularly if
 someone forgot to document them) and you don't understand the error
 messages.
@@ -375,7 +377,7 @@ messages.
 =back
 
 The C<Exception::Class> magic attempts to detect circular class
-hierarchies and will die if it finds one.  It also detects missing
+hierarchies and will die if it finds one. It also detects missing
 links in a chain, for example if you declare Bar to be a subclass of
 Foo and never declare Foo.
 
@@ -419,13 +421,13 @@ exceptions in a safe manner:
 
 The C<caught()> method takes a class name and returns an exception
 object if the last thrown exception is of the given class, or a
-subclass of that class.  If it is not given any arguments, it simply
+subclass of that class. If it is not given any arguments, it simply
 returns C<$@>.
 
 You should B<always> make a copy of the exception object, rather than
-using C<$@> directly.  This is necessary because if your C<cleanup()>
+using C<$@> directly. This is necessary because if your C<cleanup()>
 function uses C<eval>, or calls something which uses it, then C<$@> is
-overwritten.  Copying the exception preserves it for the call to
+overwritten. Copying the exception preserves it for the call to
 C<do_something_with_exception()>.
 
 Exception objects also provide a caught method so you can write:
@@ -438,7 +440,7 @@ Exception objects also provide a caught method so you can write:
 =head2 Uncatchable Exceptions
 
 Internally, the C<caught()> method will call C<isa()> on the exception
-object.  You could make an exception "uncatchable" by overriding
+object. You could make an exception "uncatchable" by overriding
 C<isa()> in that class like this:
 
  package Exception::Uncatchable;
@@ -452,10 +454,10 @@ Of course, this only works if you always call C<< Exception::Class->caught()
 
 If you're creating a complex system that throws lots of different
 types of exceptions, consider putting all the exception declarations
-in one place.  For an app called Foo you might make a
-C<Foo::Exceptions> module and use that in all your code.  This module
+in one place. For an app called Foo you might make a
+C<Foo::Exceptions> module and use that in all your code. This module
 could just contain the code to make C<Exception::Class> do its
-automagic class creation.  Doing this allows you to more easily see
+automagic class creation. Doing this allows you to more easily see
 what exceptions you have, and makes it easier to keep track of them.
 
 This might look something like this:
@@ -489,17 +491,17 @@ exceptions to have more methods.
 
 As part of your usage of C<Exception::Class>, you may want to create
 your own base exception class which subclasses
-L<Exception::Class::Base>.  You should feel free to subclass any of
-the methods documented above.  For example, you may want to subclass
+L<Exception::Class::Base>. You should feel free to subclass any of
+the methods documented above. For example, you may want to subclass
 C<new()> to add additional information to your exception objects.
 
 =head1 Exception::Class FUNCTIONS
 
 The C<Exception::Class> method offers one function, C<Classes()>,
-which is not exported.  This method returns a list of the classes that
+which is not exported. This method returns a list of the classes that
 have been created by calling the C<Exception::Class> import() method.
 Note that this is I<all> the subclasses that have been created, so it
-may include subclasses created by things like CPAN modules, etc.  Also
+may include subclasses created by things like CPAN modules, etc. Also
 note that if you simply define a subclass via the normal Perl method
 of setting C<@ISA> or C<use base>, then your subclass will not be
 included.
@@ -535,9 +537,15 @@ L<http://www.urth.org/~autarch/fs-donation.html>
 
 Dave Rolsky <autarch@urth.org>
 
+=head1 CONTRIBUTOR
+
+=for stopwords Ricardo Signes
+
+Ricardo Signes <rjbs@cpan.org>
+
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2014 by Dave Rolsky.
+This software is copyright (c) 2014 by David Rolsky.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -1,74 +1,52 @@
-#!perl
-
+use 5.006;
 use strict;
 use warnings;
 
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.051
+
 use Test::More;
 
+plan tests => 2 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
+
+my @module_files = (
+    'Exception/Class.pm',
+    'Exception/Class/Base.pm'
+);
 
 
-use File::Find;
-use File::Temp qw{ tempdir };
 
-my @modules;
-find(
-  sub {
-    return if $File::Find::name !~ /\.pm\z/;
-    my $found = $File::Find::name;
-    $found =~ s{^lib/}{};
-    $found =~ s{[/\\]}{::}g;
-    $found =~ s/\.pm$//;
-    # nothing to skip
-    push @modules, $found;
-  },
-  'lib',
-);
+# no fake home requested
 
-sub _find_scripts {
-    my $dir = shift @_;
-
-    my @found_scripts = ();
-    find(
-      sub {
-        return unless -f;
-        my $found = $File::Find::name;
-        # nothing to skip
-        open my $FH, '<', $_ or do {
-          note( "Unable to open $found in ( $! ), skipping" );
-          return;
-        };
-        my $shebang = <$FH>;
-        return unless $shebang =~ /^#!.*?\bperl\b\s*$/;
-        push @found_scripts, $found;
-      },
-      $dir,
-    );
-
-    return @found_scripts;
-}
+my $inc_switch = -d 'blib' ? '-Mblib' : '-Ilib';
 
-my @scripts;
-do { push @scripts, _find_scripts($_) if -d $_ }
-    for qw{ bin script scripts };
+use File::Spec;
+use IPC::Open3;
+use IO::Handle;
 
-my $plan = scalar(@modules) + scalar(@scripts);
-$plan ? (plan tests => $plan) : (plan skip_all => "no tests to run");
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
 
+my @warnings;
+for my $lib (@module_files)
 {
-    # fake home for cpan-testers
-    # no fake requested ## local $ENV{HOME} = tempdir( CLEANUP => 1 );
-
-    like( qx{ $^X -Ilib -e "require $_; print '$_ ok'" }, qr/^\s*$_ ok/s, "$_ loaded ok" )
-        for sort @modules;
-
-    SKIP: {
-        eval "use Test::Script 1.05; 1;";
-        skip "Test::Script needed to test script compilation", scalar(@scripts) if $@;
-        foreach my $file ( @scripts ) {
-            my $script = $file;
-            $script =~ s!.*/!!;
-            script_compiles( $file, "$script script compiles" );
-        }
+    # see L<perlfaq8/How can I capture STDERR from an external command?>
+    my $stderr = IO::Handle->new;
+
+    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
+    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+    my @_warnings = <$stderr>;
+    waitpid($pid, 0);
+    is($?, 0, "$lib loaded ok");
+
+    if (@_warnings)
+    {
+        warn @_warnings;
+        push @warnings, @_warnings;
     }
-
 }
+
+
+
+is(scalar(@warnings), 0, 'no warnings found')
+    or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING};
+
+
@@ -0,0 +1,47 @@
+do { my $x = {
+       'configure' => {
+                        'requires' => {
+                                        'ExtUtils::MakeMaker' => '0'
+                                      }
+                      },
+       'develop' => {
+                      'requires' => {
+                                      'Pod::Coverage::TrustPod' => '0',
+                                      'Test::CPAN::Changes' => '0.19',
+                                      'Test::EOL' => '0',
+                                      'Test::More' => '0.88',
+                                      'Test::NoTabs' => '0',
+                                      'Test::Pod' => '1.41',
+                                      'Test::Pod::Coverage' => '1.08',
+                                      'Test::Spelling' => '0.12',
+                                      'Test::Synopsis' => '0'
+                                    }
+                    },
+       'runtime' => {
+                      'requires' => {
+                                      'Class::Data::Inheritable' => '0.02',
+                                      'Devel::StackTrace' => '2.00',
+                                      'Scalar::Util' => '0',
+                                      'base' => '0',
+                                      'overload' => '0',
+                                      'perl' => '5.008001',
+                                      'strict' => '0',
+                                      'warnings' => '0'
+                                    }
+                    },
+       'test' => {
+                   'recommends' => {
+                                     'CPAN::Meta' => '2.120900'
+                                   },
+                   'requires' => {
+                                   'ExtUtils::MakeMaker' => '0',
+                                   'File::Spec' => '0',
+                                   'IO::Handle' => '0',
+                                   'IPC::Open3' => '0',
+                                   'Test::More' => '0.88',
+                                   'vars' => '0'
+                                 }
+                 }
+     };
+  $x;
+ }
\ No newline at end of file
@@ -0,0 +1,176 @@
+#!perl
+
+use strict;
+use warnings;
+
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.019
+
+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(
+
+);
+
+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';
+if ( $source && $HAS_CPAN_META ) {
+    if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
+        $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
+    }
+}
+else {
+    $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 );
+            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 ( @dep_errors ) {
+    diag join("\n",
+        "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
+        "The following REQUIRED prerequisites were not satisfied:\n",
+        @dep_errors,
+        "\n"
+    );
+}
+
+pass;
+
+# vim: ts=4 sts=4 sw=4 et:
@@ -0,0 +1,16 @@
+
+BEGIN {
+  unless ($ENV{AUTHOR_TESTING}) {
+    require Test::More;
+    Test::More::plan(skip_all => 'these tests are for testing by the author');
+  }
+}
+
+use strict;
+use warnings;
+use Test::More;
+
+# generated by Dist::Zilla::Plugin::Test::EOL 0.15
+use Test::EOL;
+
+all_perl_files_ok({ trailing_whitespace => 1 });
@@ -0,0 +1,41 @@
+
+BEGIN {
+  unless ($ENV{AUTHOR_TESTING}) {
+    require Test::More;
+    Test::More::plan(skip_all => 'these tests are for testing by the author');
+  }
+}
+
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.09
+
+use Test::More 0.88;
+use Test::NoTabs;
+
+my @files = (
+    'lib/Exception/Class.pm',
+    'lib/Exception/Class/Base.pm',
+    't/00-compile.t',
+    't/00-report-prereqs.dd',
+    't/00-report-prereqs.t',
+    't/author-eol.t',
+    't/author-no-tabs.t',
+    't/author-pod-spell.t',
+    't/basic.t',
+    't/caught.t',
+    't/context.t',
+    't/ecb-standalone.t',
+    't/ignore.t',
+    't/release-cpan-changes.t',
+    't/release-pod-coverage.t',
+    't/release-pod-linkcheck.t',
+    't/release-pod-no404s.t',
+    't/release-pod-syntax.t',
+    't/release-portability.t',
+    't/release-synopsis.t'
+);
+
+notabs_ok($_) foreach @files;
+done_testing;
@@ -10,18 +10,22 @@ use strict;
 use warnings;
 use Test::More;
 
-# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.004003
-eval "use Test::Spelling 0.12; use Pod::Wordlist::hanekomu; 1" or die $@;
+# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006008
+use Test::Spelling 0.12;
+use Pod::Wordlist;
 
 
 add_stopwords(<DATA>);
 all_pod_files_spelling_ok( qw( bin lib  ) );
 __DATA__
+DROLSKY
+DROLSKY's
+Rolsky
+Rolsky's
 Arun
 CPAN
 Kumar's
 PayPal
-Rolsky
 Uncatchable
 automagic
 egid
@@ -36,11 +40,12 @@ stacktrace
 stringifies
 subclasses
 uncatchable
-DROLSKY
-DROLSKY's
-Rolsky's
 Dave
 autarch
+David
+Ricardo
+Signes
+rjbs
 lib
 Exception
 Class
@@ -39,6 +39,7 @@ use Exception::Class (
 
     'ObjectRefs',
     'ObjectRefs2',
+    'ObjectRefs3',
 );
 
 $Exception::Class::BASE_EXC_CLASS = 'FooException';
@@ -79,8 +80,8 @@ Exception::Class->import('BlahBlah');
     );
 
     is(
-        $e->line, 49,
-        "Line should be 49"
+        $e->line, 50,
+        "Line should be 50"
     );
 
     is(
@@ -380,9 +381,24 @@ sub FieldsException::full_message {
     );
 }
 
-# no refs
+# unsafe ref capture
 {
-    ObjectRefs2->NoRefs(0);
+    ObjectRefs2->UnsafeRefCapture(1);
+
+    eval { Foo->new->bork2 };
+    my $exc = $@;
+
+    my @args = ( $exc->trace->frames )[1]->args;
+
+    ok(
+        ref $args[0],
+        "References should be saved in the stack trace"
+    );
+}
+
+# no refs - deprecated
+{
+    ObjectRefs3->NoRefs(0);
 
     eval { Foo->new->bork2 };
     my $exc = $@;
@@ -8,8 +8,12 @@ BEGIN {
 }
 
 
-use Test::More;
-eval 'use Test::CPAN::Changes';
-plan skip_all => 'Test::CPAN::Changes required for this test' if $@;
-changes_ok();
+use strict;
+use warnings;
+
+use Test::More 0.96 tests => 2;
+use_ok('Test::CPAN::Changes');
+subtest 'changes_ok' => sub {
+    changes_file_ok('Changes');
+};
 done_testing();
@@ -1,16 +0,0 @@
-
-BEGIN {
-  unless ($ENV{RELEASE_TESTING}) {
-    require Test::More;
-    Test::More::plan(skip_all => 'these tests are for release candidate testing');
-  }
-}
-
-use strict;
-use warnings;
-use Test::More;
-
-eval 'use Test::EOL';
-plan skip_all => 'Test::EOL required' if $@;
-
-all_perl_files_ok({ trailing_whitespace => 1 });
@@ -1,38 +0,0 @@
-
-BEGIN {
-  unless ($ENV{RELEASE_TESTING}) {
-    require Test::More;
-    Test::More::plan(skip_all => 'these tests are for release candidate testing');
-  }
-}
-
-use strict;
-use warnings;
-
-# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.07
-
-use Test::More 0.88;
-use Test::NoTabs;
-
-my @files = (
-    'lib/Exception/Class.pm',
-    'lib/Exception/Class/Base.pm',
-    't/00-compile.t',
-    't/author-pod-spell.t',
-    't/basic.t',
-    't/caught.t',
-    't/context.t',
-    't/ecb-standalone.t',
-    't/ignore.t',
-    't/release-cpan-changes.t',
-    't/release-eol.t',
-    't/release-no-tabs.t',
-    't/release-pod-coverage.t',
-    't/release-pod-linkcheck.t',
-    't/release-pod-no404s.t',
-    't/release-pod-syntax.t',
-    't/release-synopsis.t'
-);
-
-notabs_ok($_) foreach @files;
-done_testing;
@@ -7,9 +7,37 @@ BEGIN {
   }
 }
 
-# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests.
+# This file was automatically generated by Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable.
 
 use Test::Pod::Coverage 1.08;
+use Test::More 0.88;
 use Pod::Coverage::TrustPod;
 
-all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
+my %skip = map { $_ => 1 } qw(  );
+
+my @modules;
+for my $module ( all_modules() ) {
+    next if $skip{$module};
+
+    push @modules, $module;
+}
+
+plan skip_all => 'All the modules we found were excluded from POD coverage test.'
+    unless @modules;
+
+plan tests => scalar @modules;
+
+my %trustme = ();
+
+for my $module ( sort @modules ) {
+    pod_coverage_ok(
+        $module,
+        {
+            coverage_class => 'Pod::Coverage::TrustPod',
+            trustme        => $trustme{$module} || [],
+        },
+        "pod coverage for $module"
+    );
+}
+
+done_testing();
@@ -0,0 +1,19 @@
+#!perl
+
+BEGIN {
+  unless ($ENV{RELEASE_TESTING}) {
+    require Test::More;
+    Test::More::plan(skip_all => 'these tests are for release candidate testing');
+  }
+}
+
+
+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();
@@ -8,9 +8,6 @@ BEGIN {
 }
 
 
-use Test::More;
+use Test::Synopsis;
 
-eval "use Test::Synopsis";
-plan skip_all => "Test::Synopsis required for testing synopses"
-  if $@;
 all_synopsis_ok();
@@ -0,0 +1,17 @@
+[@CorePrep]
+
+[Name]
+[Version]
+
+[Region  / prelude]
+
+[Generic / SYNOPSIS]
+[Generic / DESCRIPTION]
+
+[Leftovers]
+
+[Region  / postlude]
+
+[Authors]
+[Contributors]
+[Legal]