def add(parent, child)
      raise InvalidChild::create(parent,child) unless self.is_valid_relation?(parent, child)
      parent.add_child(child)
    end
def add(parent, child)
      raise InvalidChild::create(parent,child) unless self.is_valid_relation?(parent, child)
      parent.add_child(child)
    end
# see if this node belongs directly to another node (i.e. would appropriately)
 # be added as a child of the node. Default returns false. Convention to get
 # self-organizing hierarchy to work is for belongs_under to return true when
 # belongs_directly_to is true as well. Default behaviour is to ask the node if
 # it directly_contains(self).
 # @param [Taxonomite::Node] node to evaluate
 # @return [Boolean] whether node contains this object (self)
 def belongs_directly_to(node)
   node.contains?(self)
 end

 try to add a child to a parent, with validation by this Taxonomy
 @param [Taxonomite::Node] parent the parent node
 @param [Taxonomite::Node] child the child node