class OrderedHash
def self.[](*args)
def self.[](*args) ordered_hash = new if args.length == 1 && args.first.is_a?(Array) args.first.each do |key_value_pair| next unless key_value_pair.is_a?(Array) ordered_hash[key_value_pair[0]] = key_value_pair[1] end return ordered_hash end unless args.size.even? raise ArgumentError.new("odd number of arguments for Hash") end args.each_with_index do |val, ind| next if ind.odd? ordered_hash[val] = args[ind + 1] end ordered_hash end