--- /dev/null
+use warnings;
+use strict;
+
+BEGIN {
+ eval { require Devel::CallParser };
+ if($@ ne "") {
+ require Test::More;
+ Test::More::plan(skip_all => "Devel::CallParser unavailable");
+ }
+}
+
+use Test::More tests => 1;
+
+use Devel::CallParser ();
+
+sub method {
+ my ($usepack, $name, $inpack, $sub) = @_;
+ no strict "refs";
+ *{"${inpack}::${name}"} = $sub;
+}
+
+use Devel::Declare method => sub {
+ my ($usepack, $use, $inpack, $name) = @_;
+ return sub (&) { ($usepack, $name, $inpack, $_[0]); };
+};
+
+method bar {
+ return join(",", @_);
+};
+
+is +__PACKAGE__->bar(qw(x y)), "main,x,y";
+
+1;