def parent=(parent)
      if @rank.nil?
        raise Taxonifi::NameError, "Parent of name can not be set if rank of child is not set." 
      end

      # TODO: ICZN class over-ride
      if parent.class != Taxonifi::Model::Name
        raise NameError, "Parent is not a Taxonifi::Model::Name."
      end

      if (RANKS.index(parent.rank) >= RANKS.index(self.rank))
        #  warn "WARNING:: Assigning parent to Name at same or lower rank than self (#{rank})."
        raise NameError, "Parent is same or lower rank than self (#{rank})."
      end

      @parent = parent
    end
def parent=(parent)
      if @rank.nil?
        raise Taxonifi::NameError, "Parent of name can not be set if rank of child is not set." 
      end

      # TODO: ICZN class over-ride
      if parent.class != Taxonifi::Model::Name
        raise NameError, "Parent is not a Taxonifi::Model::Name."
      end

      if (RANKS.index(parent.rank) >= RANKS.index(self.rank))
        #  warn "WARNING:: Assigning parent to Name at same or lower rank than self (#{rank})."
        raise NameError, "Parent is same or lower rank than self (#{rank})."
      end

      @parent = parent
    end
Set the parent (a Taxonifi::Model::Name)
 Passing "true" allows you to bypass the parent level restriction, do so
 with great caution.