##
Foo::new();
Foo::new("SomeOtherModuleName") ;
Foo::new([]);
Foo::new({});
##
##
sub new {
my ($class) = @_;
$class = ref($class) || $class;
(defined $class &&
(UNIVERSAL::isa($class, __PACKAGE__)
|| UNIVERSAL::isa(__PACKAGE__, $class)))
|| die "Oh no you don't!!!!";
bless {}, $class;
}