class AuditEventToGrpcAuditEventConverter {

    public AuditProto.AuditEvent convert(AuditEvent source) {
        String id = Optional.ofNullable(source.getId()).orElseGet(uuidSupplier());
        String requestId = Optional.ofNullable(source.getRequestId()).orElseGet(uuidSupplier());
        AuditProto.AuditEvent.Builder auditEventBuilder = prepareBuilderForCreateAuditEvent(source, id, requestId);
        updateAuditEventActor(auditEventBuilder, source.getActor());
        updateAuditEventData(auditEventBuilder, source.getEventData());
        return auditEventBuilder.build();
    }

    public  AuditEventToGrpcAuditEventConverter(Map<Class, AuditEventBuilderUpdater> builderUpdaters, AuditEventBuilderProvider builderProvider);

}