createFeature_(pbf, rawFeature, options) {
    const type = rawFeature.type;
    if (type === 0) {
      return null;
    }

    let feature;
    const values = rawFeature.properties;

    let id;
    if (!this.idProperty_) {
      id = rawFeature.id;
    } else {
      id = values[this.idProperty_];
      delete values[this.idProperty_];
    }

    values[this.layerName_] = rawFeature.layer.name;

    const flatCoordinates = /** @type {Array<number>} */ ([]);
    const ends = /** @type {Array<number>} */ ([]);
    this.readRawGeometry_(pbf, rawFeature, flatCoordinates, ends);

    const geometryType = getGeometryType(type, ends.length);

    if (this.featureClass === RenderFeature) {
      feature =
        new /** @type {import('./Feature.js').FeatureToFeatureClass<RenderFeature>} */ (
          this.featureClass
        )(geometryType, flatCoordinates, ends, 2, values, id);
      feature.transform(options.dataProjection);
    } else {
      let geom;
      if (geometryType == 'Polygon') {
        const endss = inflateEnds(flatCoordinates, ends);
        geom =
          endss.length > 1
            ? new MultiPolygon(flatCoordinates, 'XY', endss)
            : new Polygon(flatCoordinates, 'XY', ends);
      } else {
        geom =
          geometryType === 'Point'
            ? new Point(flatCoordinates, 'XY')
            : geometryType === 'LineString'
              ? new LineString(flatCoordinates, 'XY')
              : geometryType === 'MultiPoint'
                ? new MultiPoint(flatCoordinates, 'XY')
                : geometryType === 'MultiLineString'
                  ? new MultiLineString(flatCoordinates, 'XY', ends)
                  : null;
      }
      const ctor = /** @type {typeof import("../Feature.js").default} */ (
        this.featureClass
      );
      feature = new ctor();
      if (this.geometryName_) {
        feature.setGeometryName(this.geometryName_);
      }
      const geometry = transformGeometryWithOptions(geom, false, options);
      feature.setGeometry(geometry);
      if (id !== undefined) {
        feature.setId(id);
      }
      feature.setProperties(values, true);
    }

    return /** @type {FeatureType} */ (feature);
  }
@private
@param {PBF} pbf PBF
@param {Object} rawFeature Raw Mapbox feature.
@param {import("./Feature.js").ReadOptions} options Read options.
@return {FeatureType|null} Feature.