Friendship between modules

Such relationship between modules, compared to parent-child relationship, is more social. These two modules can be many-to-many mapping, e.g. An A can have many Bs while a B can have many A's.

API examples

my ($group1, $group)=map{Group->new(-name=>$_)} qw(group1 group2);

my $person=Person->new(
    -groups => [$group1, $group2]
);

my $person=Person->new(
    -groups=>[
        [$group1, {-rank=>1}],
        [$group2, {-rank=>10}]
    ]
);

my $person=Person->new(
    -groups=>{
        $group1 => {-rank=>1},
        $group2 => {-rank=>10}
    }
);