def set(arg, *args)
      if arg.kind_of?(Hash)
        arg.each { |k, v| public_set(k, v) }
      elsif args.size > 0
        public_set(arg, args.first)
      end
      self
    end
def set(arg, *args)
      if arg.kind_of?(Hash)
        arg.each { |k, v| public_set(k, v) }
      elsif args.size > 0
        public_set(arg, args.first)
      end
      self
    end
Sets option:
   obj.set(:option, 'value')
   obj.set('option', 'value')
   obj.set({ foo: '1', bar: '2', baz: -> { 3 } })