## name GoodModules
## failures 0
## cut

use lib::relative;
use CGI::Tiny;
use Cpanel::JSON::XS;
use Dancer2;
use DBIx::Class;
use Dir::Self;
use Exception::Class;
use File::Slurp::Tiny;
use Future;
use Future::AsyncAwait;
use GeoIP2::Database::Reader;
use IO::Async::Loop;
use IO::Socket::IP;
use JSON::MaybeXS;
use JSON::PP;
use Mad::Mapper;
use Mojo::DOM;
use Mojo::IOLoop;
use Mojo::File;
use Mojo::JSON;
use Mojo::Template;
use Mojolicious;
use Moo;
use Moose;
use Path::Tiny;
use Plack;
use POE;
use Switch::Plain;
use Syntax::Keyword::Match;
use Syntax::Keyword::Try;
use Template;
use Text::Xslate;
with 'Throwable';
use Try;
use Try::Tiny;
use Web::Simple;
use XML::LibXML;
use XML::TreeBuilder;
use XML::Twig;

## name BadModules
## failures 16
## cut

use Any::Moose;
use AnyEvent;
use Class::DBI;
use CGI;
use Coro;
use Error;
use File::Slurp;
use FindBin;
use HTML::Template;
use IO::Socket::INET6;
use IP::World;
use JSON::Any;
use JSON::XS;
use Net::IRC;
use Switch;
use XML::Simple;

## name Allowed BadModules
## parms { allowed_modules => 'AnyEvent FindBin JSON::XS' };
## failures 0
## cut

use AnyEvent;
use FindBin;
use JSON::XS;

## name Allowed BadModules failing
## parms { allowed_modules => 'AnyEvent FindBin JSON::XS' };
## failures 3
## cut

use Any::Moose;
use CGI;
use IO::Socket::INET6;