def parent_at_rank(rank)
      return self if self.rank == rank
      p = @parent
      i = 0
      while !p.nil?
        return p if p.rank == rank
        p = p.parent
        raise NameError, "Loop detected among parents fo [#{self.display_name}]" if i > 75 
      end
      nil 
    end
def parent_at_rank(rank)
      return self if self.rank == rank
      p = @parent
      i = 0
      while !p.nil?
        return p if p.rank == rank
        p = p.parent
        raise NameError, "Loop detected among parents fo [#{self.display_name}]" if i > 75 
      end
      nil 
    end
Return the parent at a given rank.
 TODO: move method to Base?