use strict; use warnings; use Test::More 'tests' => 6; package Foo; { use Object::InsideOut; use Data::Dumper; my @foo :Field :Acc(foo); my @bar :Field :Acc(bar); my %init_args :InitArgs = ( foo => { field => \@foo, def => 1, }, ); sub add_to_init_args { $init_args{bar} = { field => \@bar, def => 'bar', }; } sub renormalize { Object::InsideOut::normalize(\%init_args); } } package main; my $obj = Foo->new(); is($obj->foo(), 1 => q/Default for 'foo'/); ok(! $obj->bar() => q/'bar' not set/); Foo::add_to_init_args(); $obj = Foo->new(); is($obj->foo(), 1 => q/Default for 'foo'/); ok(! $obj->bar() => q/'bar' not set/); Foo::renormalize(); $obj = Foo->new(); is($obj->foo(), 1 => q/Default for 'foo'/); is($obj->bar(), 'bar' => q/Default for 'bar'/); exit(0); # EOF