class Protobuf::Message
def copy_to(object, method)
def copy_to(object, method) duplicate = proc { |obj| case obj when Message, String then obj.__send__(method) else obj end } object.__send__(:initialize) @values.each do |name, value| if value.is_a?(::Protobuf::Field::FieldArray) object.__send__(name).replace(value.map {|v| duplicate.call(v)}) else object.__send__("#{name}=", duplicate.call(value)) end end object end