class Protobuf::Field::BaseField

def define_setter

def define_setter
  field = self
  @message_class.class_eval do
    define_method(field.setter_method_name) do |val|
      field.warn_if_deprecated
      if val.nil?
        @values.delete(field.name)
      elsif field.acceptable?(val)
        @values[field.name] = val
      else
        raise TypeError, "unacceptable value #{val} for type #{field.type}"
      end
    end
  end
end