def hash_for_update(old, new)
      raise ArgumentError unless old.is_a?(Hash) && new.is_a?(Hash)

      Hash[old.merge(new).map { |k, v| [k.to_sym, v] }].select do |k, _v|
        update_keys.include?(k)
      end
    end
def hash_for_update(old, new)
      raise ArgumentError unless old.is_a?(Hash) && new.is_a?(Hash)

      Hash[old.merge(new).map { |k, v| [k.to_sym, v] }].select do |k, _v|
        update_keys.include?(k)
      end
    end
doing a PUT to update an object requires only a certain subset of
 the keys returned by #describe(). This method takes the
 existing description of an object and turns it into a new has
 which can be PUT.

 @param old [Hash] a hash of the existing object
 @param new [Hash] the keys you wish to update
 @return [Hash] a hash containing only the keys which need to be
   sent to the API. Keys will be symbolized.