private void onEventNotification(List<EventFieldList> events) {
        long receiveTs = System.currentTimeMillis();
        Metadata responseMetadata = new DefaultMetadata.Builder()
            .put(PlcMetadataKeys.RECEIVE_TIMESTAMP, receiveTs)
            .build();

        Map<String, Metadata> metadata = new HashMap<>();
        Map<String, PlcResponseItem<PlcValue>> tagValues = new LinkedHashMap<>();
        for (EventFieldList event : events) {
            String tagName = tagNames.get((int) event.getClientHandle() - 1);
            OpcuaTag tag = (OpcuaTag) subscriptionRequest.getTag(tagName).getTag();

            Iterator<String> fieldNames = tag.getConfig().keySet().iterator();
            Map<String, PlcValue> mapping = new LinkedHashMap<>();
            metadata.put(tagName, responseMetadata);
            for (Variant variant : event.getEventFields()) {
                if (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    PlcValue plcValue = OpcuaProtocolLogic.variantToPlcValue(tag, variant);
                    mapping.put(fieldName, plcValue);
                    tagValues.put(tagName, new DefaultPlcResponseItem<>(PlcResponseCode.OK, new PlcStruct(mapping)));
                } else {
                    logger.error("Could not map event notification response, subscription received more data than expected");
                    tagValues.put(tagName, new DefaultPlcResponseItem<>(PlcResponseCode.INTERNAL_ERROR, new PlcNull()));
                }
            }
        }

        PlcSubscriptionEvent event = new DefaultPlcSubscriptionEvent(Instant.ofEpochMilli(receiveTs), tagValues, metadata);
        consumers.forEach(plcSubscriptionEventConsumer -> plcSubscriptionEventConsumer.accept(event));
    }
Receive the returned values from the OPCUA server and format it so that it can be received by the PLC4X client.

@param values - array of data values to be sent to the client.
plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandle.java