protected void process(ComplexEventChunk<StreamEvent> streamEventChunk) {
        if (lockWrapper != null) {
            lockWrapper.lock();
        }
        try {
            LatencyTracker latencyTracker = siddhiQueryContext.getLatencyTracker();
            if (Level.BASIC.compareTo(siddhiQueryContext.getSiddhiAppContext().getRootMetricsLevel()) <= 0 &&
                    latencyTracker != null) {
                try {
                    latencyTracker.markIn();
                    processAndClear(streamEventChunk);
                } finally {
                    latencyTracker.markOut();
                }
            } else {
                processAndClear(streamEventChunk);
            }
        } finally {
            if (lockWrapper != null) {
                lockWrapper.unlock();
            }
        }
    }
Parent implementation for all process stream receivers(Multi/Single/State). Any newly written process stream
receivers should extend this. ProcessStreamReceivers are the entry point to Siddhi queries.
modules/siddhi-core/src/main/java/io/siddhi/core/query/input/ProcessStreamReceiver.java