function MetadataTable(options) {
  options = options ?? Frozen.EMPTY_OBJECT;
  const count = options.count;
  const metadataClass = options.class;

  //>>includeStart('debug', pragmas.debug);
  Check.typeOf.number.greaterThan("options.count", count, 0);
  Check.typeOf.object("options.class", metadataClass);
  //>>includeEnd('debug');

  let byteLength = 0;
  const properties = {};
  if (defined(options.properties)) {
    for (const propertyId in options.properties) {
      if (options.properties.hasOwnProperty(propertyId)) {
        const property = new MetadataTableProperty({
          count: count,
          property: options.properties[propertyId],
          classProperty: metadataClass.properties[propertyId],
          bufferViews: options.bufferViews,
        });
        properties[propertyId] = property;
        byteLength += property.byteLength;
      }
    }
  }

  this._count = count;
  this._class = metadataClass;
  this._properties = properties;
  this._byteLength = byteLength;
}
A table containing binary metadata for a collection of entities. This is
used for representing binary properties of a batch table, as well as binary
metadata in 3D Tiles next extensions.
<p>
For 3D Tiles Next details, see the {@link https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_metadata|3DTILES_metadata Extension} for 3D Tiles, as well as the {@link https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata|EXT_feature_metadata Extension} for glTF.
</p>

@param {object} options Object with the following properties:
@param {number} options.count The number of entities in the table.
@param {object} [options.properties] A dictionary containing properties.
@param {MetadataClass} options.class The class that properties conform to.
@param {Object<string, Uint8Array>} [options.bufferViews] An object mapping bufferView IDs to Uint8Array objects.

@alias MetadataTable
@constructor

@private
@experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.