@Override
  public UnwrappingBeanPropertyWriter rename(NameTransformer transformer) {
    String oldName = _name.getValue();
    String newName = transformer.transform(oldName);

    // important: combine transformers:
    transformer = NameTransformer.chainedTransformer(transformer, _nameTransformer);

    return new UnwrappingBeanPropertyWriter(this, transformer, new SerializedString(newName));
  }
 @Override
 public JsonSerializer<Optional<?>> unwrappingSerializer(NameTransformer transformer) {
   JsonSerializer<Object> ser = _valueSerializer;
   if (ser != null) {
     ser = ser.unwrappingSerializer(transformer);
   }
   NameTransformer unwrapper =
       (_unwrapper == null)
           ? transformer
           : NameTransformer.chainedTransformer(transformer, _unwrapper);
   return withResolved(_property, _valueTypeSerializer, ser, unwrapper, _contentInclusion);
 }
 // need to override as we must get unwrapping instance...
 @Override
 public void assignSerializer(JsonSerializer<Object> ser) {
   super.assignSerializer(ser);
   if (_serializer != null) {
     NameTransformer t = _nameTransformer;
     if (_serializer.isUnwrappingSerializer()) {
       t =
           NameTransformer.chainedTransformer(
               t, ((UnwrappingBeanSerializer) _serializer)._nameTransformer);
     }
     _serializer = _serializer.unwrappingSerializer(t);
   }
 }
  // need to override as we must get unwrapping instance...
  @Override
  protected JsonSerializer<Object> _findAndAddDynamic(
      PropertySerializerMap map, Class<?> type, SerializerProvider provider)
      throws JsonMappingException {
    JsonSerializer<Object> serializer;
    if (_nonTrivialBaseType != null) {
      JavaType subtype = provider.constructSpecializedType(_nonTrivialBaseType, type);
      serializer = provider.findValueSerializer(subtype, this);
    } else {
      serializer = provider.findValueSerializer(type, this);
    }
    NameTransformer t = _nameTransformer;
    if (serializer.isUnwrappingSerializer()) {
      t =
          NameTransformer.chainedTransformer(
              t, ((UnwrappingBeanSerializer) serializer)._nameTransformer);
    }
    serializer = serializer.unwrappingSerializer(t);

    _dynamicSerializers = _dynamicSerializers.newWith(type, serializer);
    return serializer;
  }