Bio::Phylo::Mediators::TaxaMediator - Mediator for links between
    taxa and other objects
This module manages links between taxon objects and other objects
    linked to them. It is an implementation of the Mediator design pattern (e.g.
    see <http://www.atug.com/andypatterns/RM.htm>,
    <http://home.earthlink.net/~huston2/dp/mediator.html>).
Methods defined in this module are meant only for internal usage
    by Bio::Phylo.
  - new()
- TaxaMediator constructor.
    
     Type    : Constructor
 Title   : new
 Usage   : my $mediator = Bio::Phylo::Taxa::TaxaMediator->new;
 Function: Instantiates a Bio::Phylo::Taxa::TaxaMediator
           object.
 Returns : A Bio::Phylo::Taxa::TaxaMediator object (singleton).
 Args    : None.
    
  - register()
- Stores argument in invocant's cache.
    
     Type    : Method
 Title   : register
 Usage   : $mediator->register( $obj );
 Function: Stores an object in mediator's cache, if relevant
 Returns : $self
 Args    : An object, $obj
 Comments: This method is called every time an object is instantiated.
    
- unregister()
- Removes argument from invocant's cache.
    
     Type    : Method
 Title   : unregister
 Usage   : $mediator->unregister( $obj );
 Function: Cleans up mediator's cache of $obj and $obj's relations
 Returns : $self
 Args    : An object, $obj
 Comments: This method is called every time an object is destroyed.
    
- set_link()
- Creates link between objects.
    
     Type    : Method
 Title   : set_link
 Usage   : $mediator->set_link( -one => $obj1, -many => $obj2 );
 Function: Creates link between objects
 Returns : $self
 Args    : -one  => $obj1 (source of a one-to-many relationship)
           -many => $obj2 (target of a one-to-many relationship)
 Comments: This method is called from within, for example, set_taxa
           method calls. A call like $taxa->set_matrix( $matrix ),
           and likewise a call like $matrix->set_taxa( $taxa ), are 
           both internally rerouted to:
           $mediator->set_link( 
                -one  => $taxa, 
                -many => $matrix 
           );
    
- get_link()
- Retrieves link between objects.
    
     Type    : Method
 Title   : get_link
 Usage   : $mediator->get_link( 
               -source => $obj, 
               -type   => _CONSTANT_,
           );
 Function: Retrieves link between objects
 Returns : Linked object
 Args    : -source => $obj (required, the source of the link)
           -type   => a constant from Bio::Phylo::Util::CONSTANT
           (-type is optional, used to filter returned results in 
           one-to-many query).
 Comments: This method is called from within, for example, get_taxa
           method calls. A call like $matrix->get_taxa()
           and likewise a call like $forest->get_taxa(), are 
           both internally rerouted to:
           $mediator->get_link( 
               -source => $self # e.g. $matrix or $forest           
           );
           A call like $taxa->get_matrices() is rerouted to:
           $mediator->get_link( -source => $taxa, -type => _MATRIX_ );
    
- remove_link()
- Removes link between objects.
    
     Type    : Method
 Title   : remove_link
 Usage   : $mediator->remove_link( -one => $obj1, -many => $obj2 );
 Function: Removes link between objects
 Returns : $self
 Args    : -one  => $obj1 (source of a one-to-many relationship)
           -many => $obj2 (target of a one-to-many relationship)
           (-many argument is optional)
 Comments: This method is called from within, for example, 
           unset_taxa method calls. A call like $matrix->unset_taxa() 
           is rerouted to:
           $mediator->remove_link( -many => $matrix );
           A call like $taxa->unset_matrix( $matrix ); is rerouted to:
           $mediator->remove_link( -one => $taxa, -many => $matrix );
    
There is a mailing list at
    <https://groups.google.com/forum/#!forum/bio-phylo> for any user or
    developer questions and discussions.
  - Bio::Phylo::Manual
- Also see the manual: Bio::Phylo::Manual and
      <http://rutgervos.blogspot.com>.
If you use Bio::Phylo in published research, please cite it:
Rutger A Vos, Jason Caravas, Klaas Hartmann,
    Mark A Jensen and Chase Miller, 2011. Bio::Phylo -
    phyloinformatic analysis using Perl. BMC Bioinformatics 12:63.
    <http://dx.doi.org/10.1186/1471-2105-12-63>