The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Mechanics;
use base qw(Class::AutoClass);
use vars qw(@AUTO_ATTRIBUTES %AUTODB);
use autodbUtil;			# to get norm_counts
@AUTO_ATTRIBUTES=qw(id name
		    string_key integer_key float_key object_key
		    string_list integer_list float_list object_list);
%AUTODB=
  (collections=>
   {Mechanics=>
    qq(id integer, name string,
       string_key string, integer_key integer, float_key float, object_key object,
       string_list list(string), integer_list list(integer), float_list list(float), 
       object_list list(object))});
Class::AutoClass::declare;

# use same base values for all keys. list values are base values repeated list_count times
sub _init_self {
  my($self,$class,$args)=@_;
  my($num_objects,$list_count)=@$args{qw(num_objects list_count)};
#   $self->name("mechanics $num_objects+$list_count");
#   $self->id(id_next());
  # base values are fixed
  $self->string_key('string');
  $self->integer_key(123);
  $self->float_key(123.456);
  $self->object_key($self);
  # list values are base values x $list_count
  $self->string_list([($self->string_key)x$list_count]);
  $self->integer_list([($self->integer_key)x$list_count]);
  $self->float_list([($self->float_key)x$list_count]);
  $self->object_list([($self->object_key)x$list_count]);
}

sub correct_diffs {
  my($class,$list_count)=@_;
  my $correct_diffs=norm_counts
    {Mechanics=>1,
       map {'Mechanics_'.$_=>$list_count} 
	 qw(string_list integer_list float_list object_list)};

  # $correct_diffs;
}

1;