void RasterLayer::setRasterOpacity(PropertyValue<float> value) {
    if (value == getRasterOpacity())
        return;
    auto impl_ = mutableImpl();
    impl_->paint.template get<RasterOpacity>().value = value;
    baseImpl = std::move(impl_);
    observer->onLayerChanged(*this);
}
void RasterLayer::setRasterOpacity(PropertyValue<float> value, const optional<std::string>& klass) {
    if (value == getRasterOpacity(klass))
        return;
    impl->paint.rasterOpacity.set(value, klass);
    impl->observer->onLayerPaintPropertyChanged(*this);
}