function PropertyTable(options) {
  options = options ?? Frozen.EMPTY_OBJECT;

  //>>includeStart('debug', pragmas.debug);
  Check.typeOf.number("options.count", options.count);
  //>>includeEnd('debug');

  this._name = options.name;
  this._id = options.id;
  this._count = options.count;
  this._extras = options.extras;
  this._extensions = options.extensions;
  this._metadataTable = options.metadataTable;
  this._jsonMetadataTable = options.jsonMetadataTable;
  this._batchTableHierarchy = options.batchTableHierarchy;
}
A property table for use with the <code>EXT_structural_metadata</code> extension or
legacy <code>EXT_feature_metadata</code> glTF extension. It also includes some
options to be compatible with the 3D Tiles 1.0 batch table.
<p>
For batch tables, properties are resolved in the following order:
</p>
<ol>
  <li>binary properties from options.metadataTable</li>
  <li>JSON properties from options.jsonMetadataTable</li>
  <li>batch table hierarchy properties from options.batchTableHierarchy</li>
</ol>
<p>
See the {@link https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_structural_metadata|EXT_structural_metadata Extension} as well as the
previous {@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 {string} [options.name] Human-readable name to describe the table
@param {string|number} [options.id] A unique id to identify the property table, useful for debugging. For <code>EXT_structural_metadata</code>, this is the array index in the property tables array, for <code>EXT_feature_metadata</code> this is the dictionary key in the property tables dictionary.
@param {number} options.count The number of features in the table.
@param {MetadataTable} [options.metadataTable] A table of binary properties.
@param {JsonMetadataTable} [options.jsonMetadataTable] For compatibility with the old batch table, free-form JSON properties can be passed in.
@param {BatchTableHierarchy} [options.batchTableHierarchy] For compatibility with the <code>3DTILES_batch_table_hierarchy</code> extension, a hierarchy can be provided.
@param {object} [options.extras] Extra user-defined properties
@param {object} [options.extensions] An object containing extensions

@alias PropertyTable
@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.