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