def for(*args)
      @for = args.dup
      @for.extend(DeepFlattening)
      @for = @for.deep_flatten

      @components.each do |index, matcher|
        delegated_for(index, matcher, @for)
      end
      self
    end
def for(*args)
      @for = args.dup
      @for.extend(DeepFlattening)
      @for = @for.deep_flatten

      @components.each do |index, matcher|
        delegated_for(index, matcher, @for)
      end
      self
    end
Specifies the inputs' names with more accuracy than the default regular expressions. It
 delegates to each matcher's +for+ method. But it first appends the matcher's key to the last
 component of the input's name.

 @example Input naming delegation
   hour_matcher   = HasSelect.new
   minute_matcher = HasSelect.new
   time_matcher   = MultipleInputMatcher.new('4i' => hour_matcher, '5i' => minute_matcher)

   time_matcher.for(:event => :start_time) # calls hour_matcher.for("event", "start_time(4i)")
                                           # and minute_matcher.for("event", "start_time(5i)")

 @param [Array, Hash]  args  A hierarchy of string that specify the attribute name.

 @return [MultipleInputMatcher] self