my $old_metaclass = blessed($options{package})
? $options{package}
: Class::MOP::get_metaclass_by_name($options{package});
+ $old_metaclass->_remove_generated_metaobjects
+ if $old_metaclass && $old_metaclass->isa('Class::MOP::Class');
my $new_metaclass = $class->SUPER::reinitialize(@args);
$new_metaclass->_restore_metaobjects_from($old_metaclass)
- if $old_metaclass;
+ if $old_metaclass && $old_metaclass->isa('Class::MOP::Class');
return $new_metaclass;
}
}
}
+sub _remove_generated_metaobjects {
+ my $self = shift;
+
+ for my $attr (map { $self->get_attribute($_) } $self->get_attribute_list) {
+ $attr->remove_accessors;
+ }
+}
+
## ANON classes
{