The record type of descriptors for protocol buffer message types. It contains
- an immutable constructor field holding a procedure that creates a new message instance taking only keyword arguments to fill the instance fields,
- an immutable fields field holding a hash table that maps numeric field tags to field information records and
- an immutable required field holding a hash table that maps the numeric tags of required fields to their information records.