_new for Accessor
[gitmo/Class-MOP.git] / lib / Class / MOP / Method / Accessor.pm
index afa4340..f882ae5 100644 (file)
@@ -28,16 +28,7 @@ sub new {
     ($options{package_name} && $options{name})
         || confess "You must supply the package_name and name parameters $Class::MOP::Method::UPGRADE_ERROR_TEXT";
 
-    my $self = bless {
-        # from our superclass
-        'body'          => undef,
-        'package_name' => $options{package_name},
-        'name'         => $options{name},        
-        # specific to this subclass
-        'attribute'     => $options{attribute},
-        'is_inline'     => ($options{is_inline} || 0),
-        'accessor_type' => $options{accessor_type},
-    } => $class;
+    my $self = $class->_new(%options);
 
     # we don't want this creating
     # a cycle in the code, if not
@@ -49,6 +40,14 @@ sub new {
     return $self;
 }
 
+sub _new {
+    my ( $class, %options ) = @_;
+
+    $options{is_inline} ||= 0;
+
+    return bless \%options, $class;
+}
+
 ## accessors
 
 sub associated_attribute { (shift)->{'attribute'}     }