sub setup_table {
my ($self, $class) = @_;
$class->load_components(qw/Core/);
$class->table($self->tablename);
my ($left_class, $right_class) = ($self->left_class, $self->right_class);
my ($left_name, $right_name) = ($self->left_name, $self->right_name);
my $l_info = $left_class->column_info($left_class->primary_columns);
my $r_info = $right_class->column_info($right_class->primary_columns);
$class->add_columns(
$left_name => { %$l_info, is_nullable => 0, },
$right_name => { %$r_info, is_nullable => 0, },
);
$class->set_primary_key($left_name, $right_name);
# us -> them
$class->belongs_to( $left_name => $left_class );
$class->belongs_to( $right_name => $right_class );
# them -> us
my $lmap = $self->left_to_map_relation;
my $rmap = $self->right_to_map_relation;
$left_class->has_many( $lmap => $class, $left_name );
$right_class->has_many( $rmap => $class, $right_name );
# many2many
my $rights_from_left = $self->rights_from_left;
my $lefts_from_right = $self->lefts_from_right;
$left_class->many_to_many( $rights_from_left => $lmap => $right_name )
unless $self->suppress_left_m2m;
$right_class->many_to_many( $lefts_from_right => $rmap => $left_name )
unless $self->suppress_right_m2m;
}