def add_marks(marks=nil)
      self.each {|elm| elm.add_marks(marks)} if marks
      if block_given?
        self.each do |elm|
          hash = yield elm
          elm.add_marks(hash) if Hash===hash
        end
      end
    end
def add_marks(marks=nil)
      self.each {|elm| elm.add_marks(marks)} if marks
      if block_given?
        self.each do |elm|
          hash = yield elm
          elm.add_marks(hash) if Hash===hash
        end
      end
    end
When _marks_ is provided, the invocation is fired to all group
 elements. When a block is given, it is called on each element,
 passing it as argument. If the block returns a hash, that hash
 is installed as marks on the iterated element.
 The two usages (_marks_ and block) can be used conjointly.