+When the array contains elements they are updated if they exist, created when
+not and deleted if not included.
+
+=head3 All foreign table columns are nullable
+
+In this case recursive_update defaults to nullifying the foreign columns.
+
+=head3 Not all foreign table columns are nullable
+
+In this case recursive_update deletes the foreign rows.
+
+Updating the relationship:
+
+ Passing ids:
+
+ my $dvd = $dvd_rs->recursive_update( {
+ id => 1,
+ tags => [1, 2],
+ });
+
+ Passing hashrefs:
+
+ my $dvd = $dvd_rs->recursive_update( {
+ id => 1,
+ tags => [
+ {
+ id => 1,
+ file => 'file0'
+ },
+ {
+ id => 2,
+ file => 'file1',
+ },
+ ],
+ });
+
+ Passing objects:
+
+ TODO
+
+ You can even mix them:
+
+ my $dvd = $dvd_rs->recursive_update( {
+ id => 1,
+ tags => [ '2', { id => '3' } ],
+ });
+
+Clearing the relationship:
+
+ my $dvd = $dvd_rs->recursive_update( {
+ id => 1,
+ tags => undef,
+ });
+
+ This is the same as passing an empty array:
+
+ my $dvd = $dvd_rs->recursive_update( {
+ id => 1,
+ tags => [],
+ });
+
+=head2 Treatment of many-to-many pseudo relations
+
+The function gets the information about m2m relations from DBIx::Class::IntrospectableM2M.
+If it is not loaded in the ResultSource classes - then the code relies on the fact that:
+ if($object->can($name) and