module Gapic::Config
def create_setter name_ivar, name_setter, default, validator
def create_setter name_ivar, name_setter, default, validator define_method name_setter do |new_value| valid_value = validator.call new_value if new_value.nil? # Always allow nil when a default value is present valid_value ||= !default.nil? valid_value ||= begin # Allow nil if parent config has the getter method. parent = instance_variable_get :@parent_config if instance_variable_defined? :@parent_config parent&.respond_to? name_setter end end raise ArgumentError unless valid_value if new_value.nil? remove_instance_variable name_ivar if instance_variable_defined? name_ivar else instance_variable_set name_ivar, new_value end end end