final void subTree( final PhylogenyNode node ) {
        if ( getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED ) {
            JOptionPane.showMessageDialog( this,
                                           "Cannot get a sub/super tree in unrooted display",
                                           "Attempt to get sub/super tree in unrooted display",
                                           JOptionPane.WARNING_MESSAGE );
            return;
        }
        if ( node.isExternal() ) {
            JOptionPane.showMessageDialog( this,
                                           "Cannot get a subtree of a external node",
                                           "Attempt to get subtree of external node",
                                           JOptionPane.WARNING_MESSAGE );
            return;
        }
        if ( node.isRoot() && ( _subtree_index < 1 ) ) {
            JOptionPane.showMessageDialog( this,
                                           "Cannot get a subtree of the root node",
                                           "Attempt to get subtree of root node",
                                           JOptionPane.WARNING_MESSAGE );
            return;
        }
        if ( !node.isExternal() && !node.isRoot() && ( _subtree_index <= ( TreePanel.MAX_SUBTREES - 1 ) ) ) {
            _phylogenies[ _subtree_index++ ] = _phylogeny;
            _phylogeny = _phylogeny.subTree( node );
            updateSubSuperTreeButton();
        }
        else if ( node.isRoot() && ( _subtree_index >= 1 ) ) {
            superTree();
        }
        _main_panel.getControlPanel().showWhole();
        repaint();
    }