module ElasticAPM::Config::Options::InstanceMethods

def [](key)

def [](key)
  options[key]
end

def load_schema

def load_schema
  Hash[self.class.schema.map do |key, args|
    [key, Option.new(key, **args)]
  end]
end

def method_missing(name, *value)

def method_missing(name, *value)
  name_str = name.to_s
  if name_str.end_with?('=')
    key = name_str[0...-1].to_sym
    set(key, value.first)
  elsif name_str.end_with?('?')
    key = name_str[0...-1].to_sym
    options.key?(key) ? options[key].value : super
  elsif options.key?(name)
    options.fetch(name).value
  else
    super
  end
end

def set(key, value)

def set(key, value)
  options.fetch(key.to_sym).set(value)
rescue KeyError
  warn format("Unknown option '%s'", key)
  nil
end