public Field(SerializableType type, bool isArray, string name)
 {
     Type    = type;
     IsArray = isArray;
     Name    = name;
 }
 internal SerializableStructure(SerializableType type, int depth)
 {
     Depth  = depth;
     Type   = type ?? throw new ArgumentNullException(nameof(type));
     Fields = new SerializableField[type.FieldCount];
 }
 public SerializablePointer(SerializableType type) :
     base(type, null, EmptyFields)
 {
 }
 internal SerializableStructure(SerializableType type, SerializableStructure @base, IReadOnlyList <SerializableField> fields)
 {
     Type   = type ?? throw new ArgumentNullException(nameof(type));
     Base   = @base;
     Fields = fields ?? throw new ArgumentNullException(nameof(fields));
 }