class BeanPropertyWriterDelegate extends BeanPropertyWriter {

  private static final Logger logger = LoggerFactory.getLogger(BeanPropertyWriterDelegate.class);

  private final BeanPropertyWriter delegate;
  private final AnnotatedMember anyGetter;
  private final transient Supplier<Boolean> logDuplicateWarning;

  BeanPropertyWriterDelegate(BeanPropertyWriter delegate, AnnotatedMember anyGetter, Supplier<Boolean> logDuplicateWarning) {
    super(delegate);
    this.delegate = delegate;
    this.anyGetter = anyGetter;
    this.logDuplicateWarning = logDuplicateWarning;
  }

  @Override
  public void serializeAsField(Object bean, JsonGenerator gen, SerializerProvider prov) throws Exception {<FILL_FUNCTION_BODY>}

  @Override
  public void assignNullSerializer(JsonSerializer<Object> nullSer) {
    delegate.assignNullSerializer(nullSer);
  }

  @Override
  public void assignSerializer(JsonSerializer<Object> ser) {
    delegate.assignSerializer(ser);
  }

  @Override
  public void assignTypeSerializer(TypeSerializer typeSer) {
    delegate.assignTypeSerializer(typeSer);
  }
}

    Object valueInAnyGetter = null;
    if (anyGetter != null) {
      Object anyGetterValue = anyGetter.getValue(bean);
      if (anyGetterValue != null) {
        valueInAnyGetter = ((Map<?, ?>) anyGetterValue).get(delegate.getName());
      }
    }
    if (valueInAnyGetter == null) {
      delegate.serializeAsField(bean, gen, prov);
    } else if (Boolean.TRUE.equals(logDuplicateWarning.get())) {
      logger.warn("Value in field '{}' ignored in favor of value in additionalProperties ({}) for {}",
          delegate.getName(), valueInAnyGetter, bean.getClass().getName());
    }
  
<no_super_class>