class Protobuf::Field::BaseField

def define_setter

def define_setter
  field = self
  method_name = field.setter
  message_class.class_eval do
    define_method(method_name) do |val|
      if val.nil? || (val.respond_to?(:empty?) && val.empty?)
        @values.delete(field.name)
      elsif field.acceptable?(val)
        @values[field.name] = field.coerce!(val)
      else
        fail TypeError, "Unacceptable value #{val} for field #{field.name} of type #{field.type_class}"
      end
    end
    ::Protobuf.deprecator.deprecate_methods(method_name)
  end
end