def enum_keys_with_value(target_value=nil, &filter) # :yields: value
      return enum_keys_with_value { |v| v == target_value } if target_value
      filter_on_value(&filter).keys
    end
def enum_keys_with_value(target_value=nil, &filter) # :yields: value
      return enum_keys_with_value { |v| v == target_value } if target_value
      filter_on_value(&filter).keys
    end
Returns an Enumerable whose each block is called on each key which maps to a value which
 either equals the given target_value or satisfies the filter block.

 @param target_value the filter value
 @yield [value] the filter block
 @return [Enumerable] the filtered keys