def METHOD_NAME(self, pbf_data, y_coord_down=False):
    self.tile.ParseFromString(pbf_data)
    tile = {}
    for layer in self.tile.layers:
        keys = layer.keys
        vals = layer.values
        features = []
        for feature in layer.features:
            tags = feature.tags
            props = {}
            assert len(tags) % 2 == 0, 'Unexpected number of tags'
            for key_idx, val_idx in zip(tags[::2], tags[1::2]):
                key = keys[key_idx]
                val = vals[val_idx]
                value = self.parse_value(val)
                props[key] = value
            geometry = self.parse_geometry(feature.geometry, feature.type,
                                           layer.extent, y_coord_down)
            new_feature = {
                "geometry": geometry,
                "properties": props,
                "id": feature.id,
                "type": feature.type
            }
            features.append(new_feature)
        tile[layer.name] = {
            "extent": layer.extent,
            "version": layer.version,
            "features": features,
        }
    return tile