class BinData::StructArgProcessor

def ensure_field_names_are_valid(obj_class, field_names)

def ensure_field_names_are_valid(obj_class, field_names)
  reserved_names = BinData::Struct::RESERVED
  field_names.each do |name|
    if obj_class.method_defined?(name)
      raise NameError.new("Rename field '#{name}' in #{obj_class}, " \
                          "as it shadows an existing method.", name)
    end
    if reserved_names.include?(name)
      raise NameError.new("Rename field '#{name}' in #{obj_class}, " \
                          "as it is a reserved name.", name)
    end
    if field_names.count(name) != 1
      raise NameError.new("field '#{name}' in #{obj_class}, " \
                          "is defined multiple times.", name)
    end
  end
end