The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Override;

use strict;
use Class::AutoClass;
use Child;
use vars qw(@ISA @AUTO_ATTRIBUTES @OTHER_ATTRIBUTES %SYNONYMS %DEFAULTS);
@ISA = qw(Class::AutoClass);

@AUTO_ATTRIBUTES=qw(a);
@OTHER_ATTRIBUTES=qw();
%SYNONYMS=();
%DEFAULTS=();
Class::AutoClass::declare(__PACKAGE__);

sub _init_self {
  my($self,$class,$args)=@_;
  return unless $class eq __PACKAGE__; # to prevent subclasses from re-running this
  if($args->override){
     my $p = new Child;
     $self->{__OVERRIDE__}=$p; # retrun a different object than expected
  } else {
    return $self
  }
}


1;