class Backports::Data
def initialize(**named_values)
def initialize(**named_values) given = named_values.keys missing = members - given unless missing.empty? missing = missing.map(&:inspect).join(", ") raise ArgumentError, "missing keywords: #{missing}" end if members.size < given.size extra = (given - members).map(&:inspect).join(", ") raise ArgumentError, "unknown keywords: #{extra}" end @__members__ = named_values.freeze freeze end